conteggio e identificazione dei layers di una immagine

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
infgraf
Prode Principiante
Messaggi: 4
Iscrizione: martedì 9 ottobre 2007, 12:15

conteggio e identificazione dei layers di una immagine

Messaggio da infgraf »

salve
sto cercando nel mio plug in di riuscire a contare i layer e ad identificare l'id sempre dei layers che vado ad applicare all'immagine prima di avviare il plug in

sto cercando di utilizzare questa funzione:

Codice: Seleziona tutto

gimp_image_get_layers ()

gint*               gimp_image_get_layers               (gint32 image_ID,
                                                         gint *num_layers);

Returns the list of layers contained in the specified image.

This procedure returns the list of layers contained in the specified image. The order of layers is from topmost to bottommost.

image_ID : 	The image.
num_layers : 	The number of layers contained in the image.
Returns : 	The list of layers contained in the image.
in questo frammento di codice

Codice: Seleziona tutto

gint32* layers;
gint32 layers_number;
layers = gimp_image_get_layers (drawable->drawable_id, &layers_number);
gint num = sizeof (layers) / sizeof (layers[0]);
gint h = 0;
for(h = 0; h < num; h++){g_message("%i", layers[h]);}
però nn ho ancora capito come andare a prendere il secondo valore da passare alla funzione, cioè il num di layers contenuti nell'immagine

grazie
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: conteggio e identificazione dei layers di una immagine

Messaggio da takeshi »

Il secondo parametro non va inizializzato. Infatti il valore corretto gli verrà assegnato dalla funzione gimp_image_get_layers() stessa. Se guardi bene, la variabile num_layers, che è un (g)intero è stranamente passata per riferimento.

Il codice che hai postato è un po' truffaldino perché utilizza un metodo low-level per recuperare il numero di layers. In realtà il modo giusto(/equivalente?) dovrebbe essere:

Codice: Seleziona tutto

gint32* layers;
gint32 layers_number;
layers = gimp_image_get_layers (drawable->drawable_id, &layers_number);

gint h = 0;
for(h = 0; h < layers_number; h++){g_message("%i", layers[h]);}
Btw, con Google CodeSearch puoi controllare come viene utilizzata una funzione in programmi realmente esistenti. Per esempio, http://www.google.com/codesearch?q=gimp ... get_layers
Raising Elephants Is So Utterly Boring
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti