Oppure

Loading
27/06/20 12:06
Carlo
Guardando il tuo codice a grandi linee più o meno avevo capito.

Sono curioso, alla fine la minilibreria statica può diventare una dll lincabile e usabile da qualsiasi linguaggio?

Mentre scrivi il codice, come testi i progressi che fai? e per il debug?
in programmazione tutto è permesso
27/06/20 15:29
AldoBaldo
Come procedo? Non so se sia il migliore dei modi, però preparo dei comunissimi file .h, .c o .cpp in un progettino (il più minimale possibile) di code::blocks che generi un comune eseguibile .exe. Alcuni di quei file faccio in modo che siano "impermeabili" rispetto al resto del progetto che genera l'eseguibile per le "sperimentazioni". Niente #include, niente variabili globali, costanti, macro, o qualsiasi altra cosa che faccia capo a elementi presenti in file estranei a quelli che diventeranno la libreria. Il programma di "sperimentazione" funziona dunque come un programmino qualunque, avendo al suo interno anche il codice della libreria. Compresi i procedimenti di debug.

Quando ritengo di essere prossimo a una versione sufficientemente completa, preparo un secondo progetto di code::blocks configurato in modo da compilare la mia libreria statica (code::blocks mette a disposizione un modello già preimpostato). In questo secondo progetto inserisco solo i file che ho tenuto "isolati" nel progetto di "sperimentazione", quindi compilo normalmente.

Per usare la libreria statica in qualsiasi programma mi basta a questo punto rendere disponibili al compilatore e al linker rispettivamente i file nomelibreria.h e libnomelibreria.a

In alternativa, code::blocks permette di gestire più progetti in parallelo, "saltando" da uno all'altro. In questo caso si può compilare direttamente la libreria da un progetto e fare debug da un altro, aperti contemporaneamente. L'ho anche fatto, ma trovo il procedimento inutilmente macchinoso, almeno per le cose semplici che faccio io.

Al momento le cose sono al punto che puoi verificare dall'allegato. Vorrei però ancora limare qualche particolare prima di rendere pubblico il tutto. Incluso aggiungere un ringraziamento e un riferimento a chi mi ha aiutato, direttamente e indirettamente.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
27/06/20 15:32
AldoBaldo
Non ho mai provato a mettere insieme una DLL. Anzi, se devo dirla tutta trovo perfino complicato usare quelle altrui. Credo (non "so";) comunque che sia possibile passare da una libreria statica a una dinamica con poche modifiche. In effetti, code::blocks mette a disposizione un modello anche per le DLL...
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
27/06/20 17:16
Carlo
Quello che dici è abbastanza scontato :asd:, mi riferivo più alle cose pratiche :rofl:, tipo cosa devo installare per vedere in azione i file C che hai allegato?:-?
Che significa code::blocks? è un comado? un ambiente di sviluppo?:-?

Nel frattempo mi sono divertito ad estrapolare un viewer svg, usando parte della soluzione SVG.
Ne ho fatto un progetto VS unico con SVG.DLL lincata.:rofl:
Il viewer carica file .svg, ma si può anche incollare il testo svg direttamente nella TextBox, e ad ogni cambiamento del testo l'immagine viene immediatamente ricalcolata mostrando la variazione in tempo reale.
Ogni immagine visualizzata viene salvata in OUTPUT.PNG

Chissà forse ti viene voglia di implementare qualche funzione in più al tuo codice, testi rettangoli e sfumature sono alla tua portata.:k:
Ultima modifica effettuata da Carlo 27/06/20 18:23
in programmazione tutto è permesso
27/06/20 20:00
AldoBaldo
Code::blocks è un IDE col quale mi trovo bene. Lo trovi qui: codeblocks.org/
Cercandolo per segnalarti il link ho appena scoperto che c'è un aggiornamento. La nostra conversazione continua a rivelarsi utile, vedi?

Per usare la mini-libreria dovrebbe bastare includere svg2gp.h e segnalare al linker dove si trova il file libsvg2gp.a per il linking statico, ma al di fuori dei pochi meccanismi che ho imparato a usare, senza provare non saprei come muovermi. Ah, magari è irrilevante, ma libsvg2gp.a l'ho compilato a 32 bit.

Al momento non ho in mente di ampliare le possibilità di svg2gp, anche se per l'uso che intendo farne potrebbe essere utile una funzione per scalare la sagoma entro un rettangolo dato (facile da fare). La funzione l'ho già pronta, ma non penso che l'inserirò nella libreria perché non mi sembra coerente e perché in definitiva non fa altro che applicare qualche metodo di Gdi+ al GraphicsPath.

Ho provato il tuo programma, e funziona. Però se tento di modificare manualmente qualche attributo del codice svg visualizzato, a volte (non sempre) mi dà l'errore che ti mostro nell'immagine allegata.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
28/06/20 14:31
Carlo
Non sono riuscito a duplicare il problema, se modifico il testo e introduco degli errori l'immagine non viene aggiornata.
Ho aggiunto una label informativa, e formattato il testo nella textbox.

Ti mando la cartella release con l'exe compilato.
Controlla se funziona.
Ultima modifica effettuata da Carlo 28/06/20 14:41
in programmazione tutto è permesso
29/06/20 0:34
AldoBaldo
Sembra non generare più errori.
Col mio PC molto lento, però, se si caricano file "complicati" i tempi di aggiornamento sono biblici.
Potresti aggirare (o almeno limitare) il problema facendo in modo che l'aggiornamento non avvenga in modo automatico, ad ogni modifica, ma avvenga solo su richiesta (ad esempio tramite un pulsante).
Ultima modifica effettuata da AldoBaldo 29/06/20 0:35
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
29/06/20 7:45
Carlo
Si, ma non oggi.:d

Ti farebbe comodo anche un pulsante [Salva il testo in SVG] ?

Non so se hai notato che se fai Ctrl+A, il testo si seleziona tutto, così si può facilmente copiare e incollare...
Ultima modifica effettuata da Carlo 29/06/20 7:46
in programmazione tutto è permesso