Lines Matching defs:cells

238 /* A cell list represents the scan line sparsely as cells ordered by
239 * ascending x. It is geared towards scanning the cells in order
249 struct cell *cells;
271 cell_list_rewind(struct cell_list *cells)
273 cells->cursor = &cells->head;
277 cell_list_init(struct cell_list *cells, int x1, int x2)
279 cells->tail.next = NULL;
280 cells->tail.x = INT_MAX;
281 cells->head.x = INT_MIN;
282 cells->head.next = &cells->tail;
283 cells->head.covered_height = 0;
284 cell_list_rewind(cells);
285 cells->count = 0;
286 cells->x1 = x1;
287 cells->x2 = x2;
288 cells->size = x2 - x1 + 1;
289 cells->cells = cells->embedded;
290 if (cells->size > ARRAY_SIZE(cells->embedded))
291 cells->cells = malloc(cells->size * sizeof(struct cell));
292 return cells->cells != NULL;
296 cell_list_fini(struct cell_list *cells)
298 if (cells->cells != cells->embedded)
299 free(cells->cells);
303 cell_list_reset(struct cell_list *cells)
305 cell_list_rewind(cells);
306 cells->head.next = &cells->tail;
307 cells->head.covered_height = 0;
308 cells->count = 0;
312 cell_list_alloc(struct cell_list *cells,
318 assert(cells->count < cells->size);
319 cell = cells->cells + cells->count++;
335 cell_list_find(struct cell_list *cells, int x)
339 if (x >= cells->x2)
340 return &cells->tail;
342 if (x < cells->x1)
343 return &cells->head;
345 tail = cells->cursor;
365 tail = cell_list_alloc(cells, tail, x);
367 return cells->cursor = tail;
370 /* Add a subpixel span covering [x1, x2) to the coverage cells. */
372 cell_list_add_subspan(struct cell_list *cells, int x1, int x2)
387 cell = cell_list_find(cells, ix1);
392 cell = cell_list_find(cells, ix2);
400 cell_list_add_span(struct cell_list *cells, int x1, int x2)
412 cell = cell_list_find(cells, ix1);
417 cell = cell_list_find(cells, ix2);
1109 struct cell_list *cells = converter->coverages;
1120 cover = cells->head.covered_height*SAMPLES_X*2;
1122 for (cell = cells->head.next; cell != &cells->tail; cell = cell->next) {