summaryrefslogtreecommitdiffstats
path: root/src/dyna-draw-context.cpp
diff options
context:
space:
mode:
authorbulia byak <buliabyak@gmail.com>2006-04-20 00:56:20 +0000
committerbuliabyak <buliabyak@users.sourceforge.net>2006-04-20 00:56:20 +0000
commit790f464078bf6cffde0b7f9adf5321afee21cd45 (patch)
tree0cb2f75b3ae4b585017399374262d39f0b828cce /src/dyna-draw-context.cpp
parentprevent fit canvas button from expanding (diff)
downloadinkscape-790f464078bf6cffde0b7f9adf5321afee21cd45.tar.gz
inkscape-790f464078bf6cffde0b7f9adf5321afee21cd45.zip
add abs_width switch for calligraphy pen width; switch it to 1..100 displayed range
(bzr r548)
Diffstat (limited to 'src/dyna-draw-context.cpp')
-rw-r--r--src/dyna-draw-context.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/dyna-draw-context.cpp b/src/dyna-draw-context.cpp
index c0c91adcc..77f32e184 100644
--- a/src/dyna-draw-context.cpp
+++ b/src/dyna-draw-context.cpp
@@ -155,6 +155,8 @@ sp_dyna_draw_context_init(SPDynaDrawContext *ddc)
ddc->vel_thin = 0.1;
ddc->flatness = 0.9;
+
+ ddc->abs_width = false;
}
static void
@@ -216,6 +218,7 @@ sp_dyna_draw_context_setup(SPEventContext *ec)
sp_event_context_read(ec, "flatness");
sp_event_context_read(ec, "usepressure");
sp_event_context_read(ec, "usetilt");
+ sp_event_context_read(ec, "abs_width");
ddc->is_drawing = false;
@@ -252,6 +255,8 @@ sp_dyna_draw_context_set(SPEventContext *ec, gchar const *key, gchar const *val)
ddc->usepressure = (val && strcmp(val, "0"));
} else if (!strcmp(key, "usetilt")) {
ddc->usetilt = (val && strcmp(val, "0"));
+ } else if (!strcmp(key, "abs_width")) {
+ ddc->abs_width = (val && strcmp(val, "0"));
}
//g_print("DDC: %g %g %g %g\n", ddc->mass, ddc->drag, ddc->angle, ddc->width);
@@ -428,11 +433,18 @@ sp_dyna_draw_brush(SPDynaDrawContext *dc)
width = 0.02 * dc->width;
}
- NR::Point del_left = 0.05 * (width + tremble_left) * dc->ang;
- NR::Point del_right = 0.05 * (width + tremble_right) * dc->ang;
+ double dezoomify_factor = 0.05 * 1000;
+ if (!dc->abs_width) {
+ dezoomify_factor /= SP_EVENT_CONTEXT(dc)->desktop->current_zoom();
+ }
+
+ NR::Point del_left = dezoomify_factor * (width + tremble_left) * dc->ang;
+ NR::Point del_right = dezoomify_factor * (width + tremble_right) * dc->ang;
+
+ NR::Point abs_middle = sp_dyna_draw_get_vpoint(dc, dc->cur);
- dc->point1[dc->npoints] = sp_dyna_draw_get_vpoint(dc, dc->cur + del_left);
- dc->point2[dc->npoints] = sp_dyna_draw_get_vpoint(dc, dc->cur - del_right);
+ dc->point1[dc->npoints] = abs_middle + del_left;
+ dc->point2[dc->npoints] = abs_middle - del_right;
dc->del = 0.5*(del_left + del_right);
@@ -606,7 +618,7 @@ sp_dyna_draw_context_root_handler(SPEventContext *event_context,
dc->width += 0.01;
if (dc->width > 1.0)
dc->width = 1.0;
- sp_ddc_update_toolbox (desktop, "altx-calligraphy", dc->width); // the same spinbutton is for alt+x
+ sp_ddc_update_toolbox (desktop, "altx-calligraphy", dc->width * 100); // the same spinbutton is for alt+x
ret = TRUE;
}
break;
@@ -616,7 +628,7 @@ sp_dyna_draw_context_root_handler(SPEventContext *event_context,
dc->width -= 0.01;
if (dc->width < 0.01)
dc->width = 0.01;
- sp_ddc_update_toolbox (desktop, "altx-calligraphy", dc->width);
+ sp_ddc_update_toolbox (desktop, "altx-calligraphy", dc->width * 100);
ret = TRUE;
}
break;