Open feverzsj opened 3 years ago
following code hangs in last stroke_to:
#include <libmypaint/mypaint.h> #include <libmypaint/mypaint-brush.h> int draw_dab(MyPaintSurface*, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float) { return TRUE; } void get_color(MyPaintSurface*, float, float, float, float* color_r, float* color_g, float* color_b, float* color_a, float) { *color_r = 0; *color_g = 0; *color_b = 0; *color_a = 0; } void stroke_to(MyPaintBrush *brush, MyPaintSurface *surf, float x, float y) { float viewzoom = 1.0, viewrotation = 0.0, barrel_rotation = 0.0; float pressure = 1.0, ytilt = 0.0, xtilt = 0.0, dtime = 1.0/10; gboolean linear = FALSE; mypaint_brush_stroke_to(brush, surf, x, y, pressure, xtilt, ytilt, dtime, viewzoom, viewrotation, barrel_rotation, linear); } int main() { MyPaintSurface sf = {.draw_dab = draw_dab, .get_color = get_color}; MyPaintBrush *brush = mypaint_brush_new(); mypaint_brush_from_defaults(brush); mypaint_brush_set_base_value(brush, MYPAINT_BRUSH_SETTING_RADIUS_LOGARITHMIC, 0.3); // >= 0.35 ok mypaint_brush_set_base_value(brush, MYPAINT_BRUSH_SETTING_DABS_PER_ACTUAL_RADIUS, 4.0); // <= 3.9 ok stroke_to(brush, &sf, 4194298.5, 4194154.0); // stroke_to(brush, &sf, 4194286.5, 4194141.0); // stroke_to(brush, &sf, 4194269.5, 4194135.0); // stroke_to(brush, &sf, 4194247.5, 4194124.0); // stroke_to(brush, &sf, 4194221.5, 4194124.0); // stroke_to(brush, &sf, 4194191.5, 4194124.0); // stroke_to(brush, &sf, 4194164.5, 4194134.0); // stroke_to(brush, &sf, 4194137.5, 4194154.0); // stroke_to(brush, &sf, 4194118.5, 4194177.0); // stroke_to(brush, &sf, 4194102.5, 4194209.0); // stroke_to(brush, &sf, 4194081.5, 4194250.0); // stroke_to(brush, &sf, 4194064.5, 4194302.0); // stroke_to(brush, &sf, 4194050.5, 4194362.0); // stroke_to(brush, &sf, 4194050.5, 4194434.0); // stroke_to(brush, &sf, 4194050.5, 4194484.0); // stroke_to(brush, &sf, 4194053.5, 4194514.0); // stroke_to(brush, &sf, 4194060.5, 4194541.0); // stroke_to(brush, &sf, 4194069.5, 4194549.0); // stroke_to(brush, &sf, 4194080.5, 4194549.0); // stroke_to(brush, &sf, 4194099.5, 4194547.0); // stroke_to(brush, &sf, 4194141.5, 4194535.0); // stroke_to(brush, &sf, 4194188.5, 4194509.0); // stroke_to(brush, &sf, 4194253.5, 4194455.0); stroke_to(brush, &sf, 4194316.5, 4194407.0); mypaint_brush_unref(brush); }
I'm implementing infinite canvas using grid index. All pixels are within same coordinate system. And map to tiles in draw_dab/get_color. So the coordinates may be relatively large. What would be a safe range for pixel coordinates?
following code hangs in last stroke_to:
I'm implementing infinite canvas using grid index. All pixels are within same coordinate system. And map to tiles in draw_dab/get_color. So the coordinates may be relatively large. What would be a safe range for pixel coordinates?