Renderowanie odrazu z SVG

problemy z funkcjonowaniem bibliotek, komponentów itp.

Renderowanie odrazu z SVG

Nowy postprzez Mironas » środa, 15 lipca 2015, 16:43

Szukam możliwie prostej metody na wygenerowanie obrazu na podstawie pliku wektorowego SVG.
Format docelowy: PNG, Gdiplus::Bitmap lub inny który da się wykorzystać.
Jedyne co potrzebuję ustalać to rozmiar wynikowej bitmapy.

Może ktoś ma doświadczenie z jakąś biblioteką która to potrafi. Najlepiej gdyby była darmowa do użytku komercyjnego.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez polymorphism » środa, 15 lipca 2015, 18:25

Jeśli dobrze pamiętam, Anti-Grain Geometry ma możliwość czytania plików SVG.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2187
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 204
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Renderowanie odrazu z SVG

Nowy postprzez Mironas » czwartek, 16 lipca 2015, 12:05

Sprawdziłem, Anti-Grain Geometry ma taką możliwość.

Ale to rozbudowana biblioteka graficzna. Pakowanie jej do programu tylko po to aby tworzyć PNG z SVG to stosowanie armaty na wróble. W pisanym programie używam już OpenGL oraz GDI+ i kolejna biblioteka graficzna to lekka przesada.
Tym bardziej, że jest na licencji GNU GPL a mój program ma być komercyjny z zamkniętym źródłem.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez polymorphism » czwartek, 16 lipca 2015, 19:14

Niby "armata na wróbla", ale jakoś innych lekkich bibliotek dla GDI nie ma.

Może to -> http://svgpp.org
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2187
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 204
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Renderowanie odrazu z SVG

Nowy postprzez Mironas » poniedziałek, 20 lipca 2015, 10:37

Próbowałem już użyć SVG++ ale po dodaniu (do nowego, pustego projektu) wymaganej biblioteki Boost wywala mi w pliku ...\boost\mpl\always.hpp
błąd w wierszu:
Kod: Zaznacz cały
    template<
        BOOST_MPL_PP_DEFAULT_PARAMS(BOOST_MPL_LIMIT_METAFUNCTION_ARITY, typename T, na)
        >

błędu

[BCC32 Error] always.hpp(26): E2270 > expected

Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez polymorphism » wtorek, 21 lipca 2015, 09:54

Trudno powiedzieć w czym problem. Rozumiem, że boosta masz zainstalowanego poprawnie, tak?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2187
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 204
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Renderowanie odrazu z SVG

Nowy postprzez Mironas » wtorek, 21 lipca 2015, 11:02

A co tam się instaluje?
Ściągnąłem bibliotekę Boost, rozpakowałem do katalogu na dysku, a w projekcie dodałem do "Include file search path" ten katalog (...\boost_1_58_0)
Kompilator "widzi" pliki nagłówkowe z Boost-a, bo gdyby nie widział to by nie pokazywał w nich błędów.
Coś jeszcze powinienem zrobić?

Spodziewał bym się raczej jakiś specyficznych ustawień w opcjach projektu.

[EDIT]
OK - faktycznie jest w dokumentacji instrukcja instalacji, ale dotyczy VS i jest tak pokręcona, że sobie z nią nie radzę.
Szukam raczej prostszego sposobu na zrobienie jednej konkretnej czynności.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez polymorphism » wtorek, 21 lipca 2015, 13:05

A co tam się instaluje?

Jeśli w C++ Builderze nie masz preintalowanego boosta, to tak, musisz skompilować i dodać boosta do projektu. Do kompilacji biblioteki potrzebujesz narzędzia Boost.Build.

Szukam raczej prostszego sposobu na zrobienie jednej konkretnej czynności.

Do czego Ci te grafiki SVG?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2187
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 204
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Renderowanie odrazu z SVG

Nowy postprzez Mironas » wtorek, 21 lipca 2015, 16:03

Do czego Ci te grafiki SVG?

W programie graficznym używam coś w rodzaju klipartów. Na tę chwilę są to pliki PNG z przeźroczystością. Jednak się kiepsko skalują i zajmują dużo miejsca. Wolałbym w programie mieć pliki SVG i w razie potrzeby dynamicznie konwertować je na PNG w określonej skali.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez polymorphism » wtorek, 21 lipca 2015, 17:59

A próbowałeś coś z Windows Metafile (.wmf/.emf)?
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Mironas
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2187
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 204
System operacyjny: Windows 7 Pro
Windows 8.1
Linux Mint 19
Kompilator: Visual Studio 2015 Community
CodeLite (MinGW)
MSYS2 (MinGW, clang)
g++
Gadu Gadu: 0
    Windows 7Firefox

Re: Renderowanie odrazu z SVG

Nowy postprzez Mironas » wtorek, 21 lipca 2015, 18:45

Nie próbowałem, nie znam tego formatu. Jutro czegoś poszukam w tym temacie.
Jakieś wskazówki w tym temacie? Jakiś edytor plików, biblioteka?

[EDIT]
OK - już widzę, że pliki ENF mogę edytować w Inkscape a otwierać w GDI+
Dzięki.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez Mironas » środa, 22 lipca 2015, 13:39

Format WMF/EMF to porażka.
Przede wszystkim nie obsługuje stopniowania przeźroczystości przez co krawędzie obiektu są postrzępione.
Prędzej chyba zrobiłbym własny mechanizm rysujący dane z SVG na Gdiplus::Bitmap.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez Cyfrowy Baron » środa, 22 lipca 2015, 15:17

A nie możesz tych plików graficznych trzymać w zewnętrznej bibliotece i ładować do programu w razie potrzeby?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4727
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Renderowanie odrazu z SVG

Nowy postprzez Mironas » środa, 22 lipca 2015, 15:41

Co masz na myśli pisząc "w zewnętrznej bibliotece"?

Te grafiki (kliparty) mam obecnie w postaci plików PNG dostarczanych razem z programem (wspólny instalator). Rozmiar tych plików powoduje, że instalator jest ogromny. Użytkownik decyduje jak duży ma być umieszczony na grafice klipart. Jeśli rozciągnie go na duży obszar to widać pikselozę. Aby tego uniknąć musiałbym jeszcze bardziej zwiększyć rozmiar plików PNG.

Idealnym rozwiązaniem było by dodanie do programu klipartów w formacie wektorowym. Dzięki temu miałbym mały rozmiar plików i możliwość ich skalowania w nieskończoność. Ale właśnie muszę mieć mechanizm który w locie zamieni mi plik wektorowy (najlepiej SVG) na rastrowy (PNG lub Gdiplus::Bitmap).
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 446
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 21
Otrzymał podziękowań: 63
System operacyjny: Windows 10
Kompilator: C++Builder 10.2 Tokyo
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Renderowanie odrazu z SVG

Nowy postprzez Cyfrowy Baron » środa, 22 lipca 2015, 16:56

Już teraz rozumiem. Grafiki rastrowej nie da się powiększać bez utraty ostrości obrazu, czyli rozwiązaniem jest tylko grafika wektorowa. Nie mam jednak pomysłu jak to rozwiązać gdyż nigdy nie potrzebowałem obsługiwać grafiki wektorowej.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4727
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Następna strona

Powrót do Biblioteki i komponenty

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron