Pop item from queue
#include "dip_pixelqueue.h"
dip_Error dip_PixelQueuePop ( queue, coords, pointer, newiteration )
Pops the next pixel from the queue. See PixelQueueNew for information on the queue data structure. coords is a pointer to an array of dip_ints, such as that obtained with dip_IntegerArray->array. It should have as many elements as the image dimensionality. If the queue was created with ndims set to 0, the coords pointer is ignored. coords and pointer can be NULL if you are not interested in either those values.
newiteration, when not NULL, will be set to DIP_TRUE if the pixel being popped is the first one in an iteration, or DIP_FALSE otherwise. When a new iteration starts, all pixels pushed onto the queue afterwards belong to the next iteration. This is useful in routines that use the queue for propagating boundaries, such as GrowRegions. First all boundary pixels are pushed onto the queue. The first iteration will need to process only these pixels, while at the same time push new pixels onto the queue for the second iteration. So after pushing all the initial boundary pixels onto the queue, the first iteration is started by popping the first pixel. All pixels pushed while processing this and the rest of the pixels will be pushed behind the "new iteration" marker. When the first pixel after this marker is popped, the newiteration boolean is set, so the program knows that the second iteration is starting. Also, the "new iteration" marker is moved to the end of the queue, so that pixels pushed subsequently will belong to iteration number 3.
Data type | Name | Description |
dip_PixelQueue | queue | The queue structure |
dip_int * | coords | Receives the coordinates of the popped item |
void ** | pointer | Receives the pointer of the popped item |
dip_Boolean * | newiteration | Set to true when the first item from an iteration is popped |
PixelQueueNew, PixelHeapNew, StablePixelHeapNew, PixelQueueFree, PixelQueuePush, PixelQueueIsEmpty