def _build_extend(self, x_mapper, y_mapper, info, append): expand_aggs_and_cols = self.expand_aggs_and_cols(append) map_onto_pixel = _build_map_onto_pixel_for_line(x_mapper, y_mapper) draw_polygon = _build_draw_polygon( append, map_onto_pixel, x_mapper, y_mapper, expand_aggs_and_cols ) perform_extend_cpu = _build_extend_polygon_geometry( draw_polygon, expand_aggs_and_cols ) geom_name = self.geometry def extend(aggs, df, vt, bounds, plot_start=True): sx, tx, sy, ty = vt xmin, xmax, ymin, ymax = bounds aggs_and_cols = aggs + info(df) geom_array = df[geom_name].array perform_extend_cpu( sx, tx, sy, ty, xmin, xmax, ymin, ymax, geom_array, *aggs_and_cols ) return extend
def extend_line(): @ngjit def append(i, x, y, agg): agg[y, x] += 1 mapper = ngjit(lambda x: x) map_onto_pixel = _build_map_onto_pixel_for_line(mapper, mapper) expand_aggs_and_cols = Glyph._expand_aggs_and_cols(append, 1) draw_line = _build_draw_segment(append, map_onto_pixel, expand_aggs_and_cols, False) return _build_extend_line_axis0(draw_line, expand_aggs_and_cols)[0]
@ngjit def append(i, x, y, agg): agg[y, x] += 1 @ngjit def tri_append(x, y, agg, n): agg[y, x] += n def new_agg(): return np.zeros((5, 5), dtype='i4') mapper = ngjit(lambda x: x) map_onto_pixel_for_line = _build_map_onto_pixel_for_line(mapper, mapper) map_onto_pixel_for_triangle = _build_map_onto_pixel_for_triangle( mapper, mapper) # Line rasterization expand_aggs_and_cols = Glyph._expand_aggs_and_cols(append, 1) _draw_segment = _build_draw_segment(append, map_onto_pixel_for_line, expand_aggs_and_cols, False) extend_line, _ = _build_extend_line_axis0(_draw_segment, expand_aggs_and_cols) # Triangles rasterization draw_triangle, draw_triangle_interp = _build_draw_triangle(tri_append) extend_triangles = _build_extend_triangles(draw_triangle, draw_triangle_interp, map_onto_pixel_for_triangle) # Trapezoid y rasterization