Lines Matching defs:cells
224 /* A cell list represents the scan line sparsely as cells ordered by
225 * ascending x. It is geared towards scanning the cells in order
235 struct cell *cells;
259 cell_list_rewind(struct cell_list *cells)
261 cells->cursor = &cells->head;
265 cell_list_init(struct cell_list *cells, int x1, int x2)
267 cells->tail.next = NULL;
268 cells->tail.x = INT_MAX;
269 cells->head.x = INT_MIN;
270 cells->head.next = &cells->tail;
271 cells->head.covered_height = 0;
272 cell_list_rewind(cells);
273 cells->count = 0;
274 cells->x1 = x1;
275 cells->x2 = x2;
276 cells->size = x2 - x1 + 1;
277 cells->cells = cells->embedded;
278 if (cells->size > ARRAY_SIZE(cells->embedded))
279 cells->cells = malloc(cells->size * sizeof(struct cell));
280 return cells->cells != NULL;
284 cell_list_fini(struct cell_list *cells)
286 if (cells->cells != cells->embedded)
287 free(cells->cells);
291 cell_list_reset(struct cell_list *cells)
293 cell_list_rewind(cells);
294 cells->head.next = &cells->tail;
295 cells->head.covered_height = 0;
296 cells->count = 0;
300 cell_list_alloc(struct cell_list *cells,
306 assert(cells->count < cells->size);
307 cell = cells->cells + cells->count++;
323 cell_list_find(struct cell_list *cells, int x)
327 if (x >= cells->x2)
328 return &cells->tail;
330 if (x < cells->x1)
331 return &cells->head;
333 tail = cells->cursor;
353 tail = cell_list_alloc(cells, tail, x);
355 return cells->cursor = tail;
358 /* Add a subpixel span covering [x1, x2) to the coverage cells. */
360 cell_list_add_subspan(struct cell_list *cells, int x1, int x2)
375 cell = cell_list_find(cells, ix1);
380 cell = cell_list_find(cells, ix2);
388 cell_list_add_span(struct cell_list *cells, int x1, int x2)
400 cell = cell_list_find(cells, ix1);
405 cell = cell_list_find(cells, ix2);
1106 struct cell_list *cells = converter->coverages;
1117 cover = cells->head.covered_height*FAST_SAMPLES_X;
1119 for (cell = cells->head.next; cell != &cells->tail; cell = cell->next) {