
Rilasciata la versione 0.2.6 di Imel la libreria grafica per la manipolazione di immagini che sto scrivendo.
Documentazione riscritta da zero e disponibile ora anche in pdf ( Ben 98 Pagine! )
Tra le novità la più importante è l’introduzione della libreria FreeImage per leggere le immagini quindi i formati supportati in lettura sono davvero tanti.
Ci sono numerosi bugfix più o meno importanti.
Altre novità che richiedono attenzione sono:
- Rotazione ora vera e propria di un angolo a piacere
- Abilitazione\Disabilitazione disegno con pennelli ( funzioni generiche )
- Maschera per pseudo-livello così da poter effettuare operazioni anche con essa ( + IMEL_MASK_LEVEL )
- Macro return_if_fail e return_var_if_fail ora non visualizzano più il messaggio di debug a meno imel non sia stata compilata con il debug abilitato
- Risolto un grosso memory leak nel salvataggio in PNG
- Categoria a parte per il riempimento, migliore della precedente che in alcuni casi risultava buggata
Per altre informazioni consultare il ChangeLog.

Pensavamo di pubblicare questa versione per l’anno nuovo, ma giorno dopo giorno le novità aumentavano e rischiava di diventare un rilascio obeso quindi per evitare difficoltà con tante novità ho deciso di pubblicare questa versione un po’ grassotta ma gestibile.
Prima di proseguire ringrazio Simone Scarinzi conosciuto come “Skary” per la partecipazione e la costanza che sta avendo nell’aiuto dello sviluppo di questa libreria, a lui si devono le nuove funzioni riguardo al disegno di questa versione e l’idea di rendere disponibili funzioni che prima erano private come ad esempio imel_point_get_from_line ().
Le novità in questi due mesi di sviluppo sono tantissime inizio ad elencarle per ordine:
Prosegui la lettura…

A solo un mese dal rilascio della versione 0.2.3 procede a ritmo serrato lo sviluppo di imel giunto alla versione 0.2.4. Le novità al contrario di quanto si possa pensare. dato il poco tempo passato tra le due versioni, sono tante.
Tra le più importanti ritroviamo il supporto a pkg-config così da poter compilare staticamente senza dover scrivere manualmente tutte le librerie, possibilità di tracciare un ellisse e disegnare un cerchio, in più reso possibile il disegno di una linea o una curva con un’immagine così da poter realizzare l’effetto “pennello” presente in molti programmi di grafica e tante altre funzioni.
E novità più importante di tutte: aggiunto il supporto al formato BMP.
Il Changelog con tutte le modifiche dettagliate.
Colgo l’occasione per annunciare la partecipazione di una persona oltre a me a questo progetto: Simone “Skary” Scarinzi, per il momento ha aiutato nella creazione della funzione per il disegno di un ellisse ma per le prossime versioni ci regalerà altre funzioni riguardanti il disegno
Link pacchetto – Link documentazione
P.s.: Il servizio HImages è stato aggiornato per avere il supporto alle bmp.
Non scrivo da tempo sul blog, ultimamente ( specialmente le persone con cui chatto di solito ) avrete notato che son sparito dalla circolazione. Oltre ad avere poco tempo ( lo so è una scusa stupida ) avevo voglia di staccare un po’ la spina, ed è quello che ho fatto. Nelle ultime settimane ho utilizzato il computer solo per programmare qualcosina, rispondere a qualche e-mail e per ascoltare musica.
Comunque programmando poco per volta è nata sotto le mie mani la nuova versione di Imel, tra le novità principali un supporto alla trasparenza migliorato generalmente e anche il suo supporto alle immagini png che ora vengono lette e salvate anche con la trasparenza. Altra novità importante è la riscrittura della funzione per disegnare una linea che non si basa più su quella per disegnare una curva ma utilizza un suo algoritmo molto più snello, semplice e veloce. Altre novità le potete leggere nel ChangeLog.

Link al pacchetto - Link Documentazione
Come promesso qualche giorno fa ecco la guida alle gtk+ riguardante i menu, questa lezione sarà un po’ diversa in quanto invece di spiegare solamente le singole funzioni o eventuali particolari che tralascerò mi concentrerò sul spiegare passo passo la creazione di un menu facendo riferimento allo stile che adotto io per crearli ( una volta poi studiate e capite le funzioni ognuno sarà libero di creare un proprio stile con cui si trova meglio ).
Costruiamo un semplice menu
Prima di iniziare con menu più articolati vorrei iniziare con un piccolissimo menu giusto per vedere le funzioni principali. Per iniziare abbiamo bisogno dei seguenti widget:
1
2
3
| GtkWidget *window;
GtkWidget *bar;
GtkWidget *file, *view, *help; |
Dunque, innanzitutto bisogna creare la barra in cui memorizzare i singoli menu, l’unica funzione utilizzabile è gtk_menu_bar_new () che non riceve argomenti e restituisce il widget che punta alla nuova barra di menu. Una barra di menu può avere come attributo il tipo di ordinamento dei vari widget che può essere uno dei seguenti:
- GTK_PACK_DIRECTION_LTR -> Le varie voci del menu saranno messe da sinistra verso destra ( quando non si imposta nessuna di queste opzioni questo è il comportamento predefinito ).
- GTK_PACK_DIRECTION_RTL -> Le voci saranno orientate da destra verso sinistra.
- GTK_PACK_DIRECTION_TTB -> Le voci saranno orientate dall’alto verso il basso.
- GTK_PACK_DIRECTION_BTT -> Le voci saranno orientate dal basso verso l’alto.
Una volta scelto il tipo di orientamento che si vuol dare agli elementi si può utilizzare la funzione gtk_menu_bar_set_pack_direction () nel seguente modo:
1
2
| bar = gtk_menu_bar_new ();
gtk_menu_bar_set_pack_direction (GTK_MENU_BAR (bar), GTK_PACK_DIRECTION_BTT); |
Siamo ancora all’inizio del lavoro, perchè ora dovremo creare: i menu grafici principali ( quelli che si vedono nella barra dei menu ) e i menu astratti ognuno dei quali bisognerà collegarlo a un menu grafico principale così da poter inserire gli elementi ( o meglio le operazioni ) di ogni singolo menu. Dunque partiamo con solo una barra di menu con i menu grafici senza sotto-menu:
1
2
3
4
5
6
7
8
| file = gtk_menu_item_new_with_label ("File");
gtk_menu_shell_append (GTK_MENU_SHELL (bar), file);
view = gtk_menu_item_new_with_label ("Visualizza");
gtk_menu_shell_append (GTK_MENU_SHELL (bar), view);
help = gtk_menu_item_new_with_label ("Aiuto");
gtk_menu_shell_append (GTK_MENU_SHELL (bar), help); |
I menu principali della barra solitamente si crea con solo il testo, senza utilizzare checkbutton, radiobutton o icone associate come invece succede per le voci del menu, per fare ciò si utilizza come si può vedere la funzione gtk_menu_item_new_with_label () che riceve come argomento il label da utilizzare e ritorna il widget riguardante il menu principale da inserire nella barra dei menu.Un menu principale si può anche allineare a destra ( mentre l’azione predefinita che eseguono le gtk+ è quella di allinearli a sinistra ) tramite la funzione gtk_menu_item_set_right_justified ().Continuando, per inserire poi il menu nella barra si utilizza la funzione gtk_menu_shell_append () per inserire il nuovo menu in coda agli altri, gtk_menu_shell_prepend () per inserirlo prima degli altri o in alternativa gtk_menu_shell_insert () per impostare manualmente il punto in cui inserirlo, questa funzione come si può immagine oltre ai primi due parametri ( GtkMenuShell che sarà la nostra barra convertita con la macro GTK_MENU_SHELL () e il GtkWidget rappresentate il nostro menu principale ) anche un intero che rappresenta la posizione in cui inserire il menu che va da 0 ( inizio ) a N-1 ( dove N è il numero dei menu inseriti ).Per velocizzare le operazioni di inserimento delle voci dei vari menu nella prossima puntata creeremo delle funzioni apposite perchè come potete immaginare richiamare tante funzioni per ogni singola operazione rende il lavoro di creazione lungo, stancante e poco mantenibile.
Fine Diciannovesima Puntata
Preferisco fermarmi qui per ora perchè inserire le voci sarà abbastanza lungo da spiegare.
Ciauz
Si continua a parlare di gtk+, vedo che durante queste guide ho iniziato ad affascinare molte ( rispetto a quanto mi aspettavo all’inizio ) persone e ne son contento
Dopo la mia piccola riflessione iniziale di autoapprezzamento, possiamo continuare l’argomento textview affrontando velocemente l’ultimo argomento per poi poter finalmente passare ad altro.
GtkTextTag
I tag forse qualcuno di voi può già intuire cosa siano, per chi non lo sapesse lo spiego non preoccupatevi. Sono delle “entità” astratte che permettono di applicare degli effetti al testo come ad esempio il grassetto, evidenziazione, colore, ecc.. Non sono così particolari come utilità, mi è capitato più volte di aver bisogno ad esempio della possibilità di evidenziare del testo per far risaltare ad esempio le parole durante una ricerca di qualche parola cosa non fattibile nel caso i tag non esistessero.
Prosegui la lettura…
Ok, continuiamo a parlare di textview occupandoci questa volta del buffer chiamato GtkTextBuffer.
Iniziamo guardando le due azioni principali che di solito si eseguono: ottenere il testo inserito, inserire del nuovo testo ed eliminare parti di testo.
- Ottenere del testo:
In questo caso ci viene in aiuto la funzione gtk_text_buffer_get_text () che richiede il buffer del testo, il punto iniziale, il punto finale e se ottenere anche i “caratteri invisibili” ( sono presenti quando si inserisce un’immagine o un widget o altre cose all’interno della textview cose che noi tralasceremo ).
Prosegui la lettura…
20 giorni di silenzio.. son tanti. L’estate, intesa come periodo di relax, per me deve ancora iniziare purtroppo.
Vabbè, non ho molta voglia di parlare a quest’ora. Occupiamoci di questa puntata alle Gtk+. Oggi parliamo del widget “GtkTextView” ovvero il widget che permette di ottenere dall’utente interi testi ( diciamo che si può considerare grosso modo un GtkEntry multilinea ).
Vista Testuale ( GtkTextView )

Una GtkTextView è il widget che potete vedere nell’immagine a fianco. Molto utile quando si deve richiedere all’utente non una stringa ma un intero testo su più linee. La sua creazione è molto semplice e ci dà l’opportunità di creare anche dei tag, ovvero creare degli effetti al testocome l’evidenziazione di alcune parole quando si cerca una stringa, delle stringhe sottolineate o in grassetto o in corsivo e così via..
Per completezza bisogna dire che questo widget sostituisce il vecchio GtkText ormai deprecato e ne sconsiglio vivamente l’utilizzo in quanto è molto, ma molto lento e poco gestibile. Questo nuovo widget è composto da due parti, la parte “grafica” chiamata GtkTextView e la parte del buffer del testo preso in input chiamata GtkTextBuffer che è quella che noi utilizzeremo di più per le operazioni “pratiche”.
Ma non corriamo troppo, concentriamoci sul widget GtkTextView prima di tutto però premetto che non tratterò tutte le funzioni ma solo quelle principali e basilari, perchè è un tipo di widget che lavora insieme ad altri widget che rendono il tutto molto grande e lungo da affrontare in queste guide a puntate.
Prosegui la lettura…
Continuiamo a parlare di gtk+, data la richiesta da parte di luky oggi parleremo dell’input da parte dell’utente tramite caselle di testo ( Entry → GtkEntry ) e ho inserito anche un po’ di funzioni da conoscere sui widget di cui non avevo parlato.
Iniziamo
Prosegui la lettura…
Come promesso, dopo la fine degli esami, una nuova guida alle Gtk+. In questa puntata affronteremo due argomenti differenti il primo riguardante la visualizzazione di un’immagine all’interno di un’applicazione in gtk+, il secondo come creare una barra di stato ( quella barra piccola che si vede nella maggior parte delle applicazioni, con a sinistra un messaggio e a destra il triangolino per ridimensionare la finestra.
Prosegui la lettura…
Commenti recenti