ADG

Sign in or create your account | Project List | Help

ADG Commit Details

Date:2010-07-03 13:20:27 (2 months 4 days ago)
Author:Nicola Fontana
Commit:8805b853468c1c993a2afaff38e07b613db4f099
Message:[demo] Updated adg-demo to the latest changes


Implemented the rendering of the optional groove machining by leveraging
the new automatic skip of incomplete entities render. This means
dimensions are rendered or not depending on the presence of the groove
in the model data.

General improvements of the drawing by using Bézier curves instead of
straight lines to expose the rear hole. Furthermore, moved the hole data
outside the GtkExpander in the data dialog: the hole is always present
in the drawing and it is not optional.

Closes issue #44: http://dev.entidi.com/p/adg/issues/44/
Files: demo/adg-demo.c (13 diffs)
demo/adg-demo.ui.in (1 diff)

Change Details

demo/adg-demo.c
2626    GtkButton *apply, *reset;
2727
2828    /* Models */
29    AdgPath *shape, *hatch;
29    AdgPath *shape, *hatch, *hatch_edge;
3030    AdgEdges *edges;
3131};
3232
...... 
6666}
6767
6868static void
69_adg_define_hole(AdgPath *path, const AdgPart *part, gdouble height)
69_adg_path_add_hole(AdgPath *path, const AdgPart *part)
7070{
7171    AdgModel *model;
7272    AdgPair pair;
7373
7474    model = ADG_MODEL(path);
75
7675    pair.x = part->LHOLE;
7776    pair.y = 0;
77
7878    adg_path_move_to(path, &pair);
7979    adg_model_set_named_pair(model, "LHOLE", &pair);
8080
...... 
8585    pair.x = 0;
8686    adg_path_line_to(path, &pair);
8787    adg_model_set_named_pair(model, "DHOLE", &pair);
88}
8889
90static void
91_adg_path_add_rail(AdgPath *path, const AdgPart *part, gdouble to_x)
92{
93    AdgModel *model;
94    AdgPair pair;
95
96    model = ADG_MODEL(path);
97    pair.x = 0;
8998    pair.y = part->D1 / 2;
99
90100    adg_path_line_to(path, &pair);
91101    adg_model_set_named_pair(model, "D1I", &pair);
92102
93    pair.x = height;
103    if (part->GROOVE && to_x > part->ZGROOVE) {
104        pair.x = part->ZGROOVE;
105        adg_path_line_to(path, &pair);
106        adg_model_set_named_pair(model, "DGROOVEI_X", &pair);
107
108        pair.y = part->D3 / 2;
109        adg_model_set_named_pair(model, "DGROOVEY_POS", &pair);
110
111        pair.y = part->DGROOVE / 2;
112        adg_path_line_to(path, &pair);
113        adg_model_set_named_pair(model, "DGROOVEI_Y", &pair);
114
115        pair.x += part->LGROOVE;
116        adg_path_line_to(path, &pair);
117
118        pair.y = part->D3 / 2;
119        adg_model_set_named_pair(model, "DGROOVEX_POS", &pair);
120
121        pair.y = part->D1 / 2;
122        adg_path_line_to(path, &pair);
123        adg_model_set_named_pair(model, "DGROOVEF_X", &pair);
124    }
125
126    pair.x = to_x;
94127    adg_path_line_to(path, &pair);
95128    adg_model_set_named_pair(model, "D1F", &pair);
96129}
97130
98131static void
99_adg_define_hatch(AdgPath *path, const AdgPart *part)
132_adg_part_define_hatch(AdgPart *part)
100133{
101    _adg_define_hole(path, part, part->LHOLE + 2);
134    AdgPath *path;
135    AdgPair pair;
136
137    path = part->hatch;
138    pair.x = 0;
139    pair.y = (part->D1 + part->DHOLE) / 4;
140
141    _adg_path_add_hole(path, part);
142    adg_path_line_to(path, &pair);
143    adg_path_curve_to_explicit(path,
144                               part->LHOLE / 2, part->DHOLE / 2,
145                               part->LHOLE + 2, part->D1 / 2,
146                               part->LHOLE + 2, 0);
102147    adg_path_reflect(path, NULL);
103148    adg_path_close(path);
149
150    path = part->hatch_edge;
151    adg_path_move_to(path, &pair);
152    adg_path_curve_to_explicit(path,
153                               part->LHOLE / 2, part->DHOLE / 2,
154                               part->LHOLE + 2, part->D1 / 2,
155                               part->LHOLE + 2, 0);
156    adg_path_reflect(path, NULL);
104157}
105158
106159static void
107_adg_define_shape(AdgPath *path, const AdgPart *part)
160_adg_part_define_shape(AdgPart *part)
108161{
109162    AdgModel *model;
163    AdgPath *path;
110164    AdgPair pair, tmp;
111165    const AdgPrimitive *primitive;
112166
113    pair.x = part->A - part->B - part->LD2;
114    _adg_define_hole(path, part, pair.x);
167    path = part->shape;
115168    model = ADG_MODEL(path);
169    pair.x = part->A - part->B - part->LD2;
170    pair.y = part->D3 / 2;
171    adg_model_set_named_pair(model, "D2_POS", &pair);
172
173    _adg_path_add_hole(path, part);
174    _adg_path_add_rail(path, part, pair.x);
116175
117176    pair.x += (part->D1 - part->D2) / 2;
118177    pair.y = part->D2 / 2;
...... 
228287
229288    adg_path_reflect(path, NULL);
230289    adg_path_close(path);
231    adg_path_move_to_explicit(path, part->LHOLE + 2, part->D1 / 2);
232    adg_path_line_to_explicit(path, part->LHOLE + 2, -part->D1 / 2);
233290}
234291
235292static void
...... 
332389    AdgRDim *rdim;
333390
334391    /* NORTH */
335    adim = adg_adim_new_full_from_model(model, "-D1I", "-D1F",
336                                        "-D1F", "-D2I", "-D1F");
337    adg_dim_set_level(ADG_DIM(adim), 2);
338    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(adim));
339
340    ldim = adg_ldim_new_full_from_model(model, "-D1F", "-D3I_X", "-D3F_Y",
341                                        ADG_DIR_UP);
342    adg_dim_set_outside(ADG_DIM(ldim), ADG_THREE_STATE_OFF);
343    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
344
345392    ldim = adg_ldim_new_full_from_model(model, "-D3I_X", "-D3F_X", "-D3F_Y",
346393                                        ADG_DIR_UP);
347    adg_ldim_switch_extension1(ldim, FALSE);
348394    adg_dim_set_outside(ADG_DIM(ldim), ADG_THREE_STATE_OFF);
349395    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
350396
...... 
367413    rdim = adg_rdim_new_full_from_model(model, "-RD34", "-RD34_R", "-RD34_XY");
368414    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(rdim));
369415
416    ldim = adg_ldim_new_full_from_model(model, "-DGROOVEI_X", "-DGROOVEF_X",
417                                        "-DGROOVEX_POS", ADG_DIR_UP);
418    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
419
420    ldim = adg_ldim_new_full_from_model(model, "D2I", "-D2I", "-D2_POS",
421                                        ADG_DIR_LEFT);
422    adg_dim_set_limits(ADG_DIM(ldim), "-0.1", NULL);
423    adg_dim_set_outside(ADG_DIM(ldim), ADG_THREE_STATE_OFF);
424    adg_dim_set_value(ADG_DIM(ldim), ADG_UTF8_DIAMETER "<>");
425    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
426
427    ldim = adg_ldim_new_full_from_model(model, "DGROOVEI_Y", "-DGROOVEI_Y",
428                                        "-DGROOVEY_POS", ADG_DIR_LEFT);
429    adg_dim_set_limits(ADG_DIM(ldim), "-0.1", NULL);
430    adg_dim_set_outside(ADG_DIM(ldim), ADG_THREE_STATE_OFF);
431    adg_dim_set_value(ADG_DIM(ldim), ADG_UTF8_DIAMETER "<>");
432    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
370433
371434    /* SOUTH */
372    ldim = adg_ldim_new_full_from_model(model, "D1I", "LHOLE", "D3F_Y",
435    adim = adg_adim_new_full_from_model(model, "D1F", "D1I", "D2I", "D1F", "D1F");
436    adg_dim_set_level(ADG_DIM(adim), 2);
437    adg_adim_switch_extension2(adim, FALSE);
438    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(adim));
439
440    ldim = adg_ldim_new_full_from_model(model, "D1I", "LHOLE", "West",
373441                                        ADG_DIR_DOWN);
374442    adg_ldim_switch_extension1(ldim, FALSE);
443    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
444
445    ldim = adg_ldim_new_full_from_model(model, "D1I", "DGROOVEI_X", "West",
446                                        ADG_DIR_DOWN);
447    adg_ldim_switch_extension1(ldim, FALSE);
448    adg_dim_set_level(ADG_DIM(ldim), 2);
375449    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
376450
377451    ldim = adg_ldim_new_full_from_model(model, "D4F", "D6I_X", "D4_POS",
...... 
380454    adg_dim_set_outside(ADG_DIM(ldim), ADG_THREE_STATE_OFF);
381455    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
382456
383    ldim = adg_ldim_new_full_from_model(model, "D3I_X", "D7F", "D3F_Y",
457    ldim = adg_ldim_new_full_from_model(model, "D1F", "D3I_X", "D2_POS",
458                                        ADG_DIR_DOWN);
459    adg_dim_set_level(ADG_DIM(ldim), 2);
460    adg_ldim_switch_extension2(ldim, FALSE);
461    adg_dim_set_outside(ADG_DIM(ldim), ADG_THREE_STATE_OFF);
462    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
463
464    ldim = adg_ldim_new_full_from_model(model, "D3I_X", "D7F", "East",
384465                                        ADG_DIR_DOWN);
385466    adg_dim_set_limits(ADG_DIM(ldim), NULL, "+0.1");
386467    adg_dim_set_level(ADG_DIM(ldim), 2);
468    adg_dim_set_outside(ADG_DIM(ldim), ADG_THREE_STATE_OFF);
387469    adg_ldim_switch_extension2(ldim, FALSE);
388470    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
389471
...... 
396478    adim = adg_adim_new_full_from_model(model, "D4F", "D4I",
397479                                        "D5I", "D4F", "D4F");
398480    adg_dim_set_level(ADG_DIM(adim), 1.5);
481    adg_adim_switch_extension2(adim, FALSE);
399482    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(adim));
400483
401484    /* EAST */
...... 
423506                                        ADG_DIR_RIGHT);
424507    adg_dim_set_value(ADG_DIM(ldim), ADG_UTF8_DIAMETER "<>");
425508    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
426
427509
428510    /* WEST */
429    ldim = adg_ldim_new_full_from_model(model, "D3I_Y", "-D3I_Y", "-West",
511    ldim = adg_ldim_new_full_from_model(model, "DHOLE", "-DHOLE", "-West",
430512                                        ADG_DIR_LEFT);
431    adg_dim_set_limits(ADG_DIM(ldim), "-0.25", NULL);
432    adg_dim_set_level(ADG_DIM(ldim), 4);
433513    adg_dim_set_value(ADG_DIM(ldim), ADG_UTF8_DIAMETER "<>");
434514    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
435515
436516    ldim = adg_ldim_new_full_from_model(model, "D1I", "-D1I", "-West",
437517                                        ADG_DIR_LEFT);
438    adg_dim_set_limits(ADG_DIM(ldim), "+0.05", "-0.05");
439    adg_dim_set_level(ADG_DIM(ldim), 3);
440    adg_dim_set_value(ADG_DIM(ldim), ADG_UTF8_DIAMETER "<>");
441    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
442
443    ldim = adg_ldim_new_full_from_model(model, "D2I", "-D2I", "-West",
444                                        ADG_DIR_LEFT);
445    adg_dim_set_limits(ADG_DIM(ldim), "-0.1", NULL);
518    adg_dim_set_limits(ADG_DIM(ldim), "-0.05", "+0.05");
446519    adg_dim_set_level(ADG_DIM(ldim), 2);
447520    adg_dim_set_value(ADG_DIM(ldim), ADG_UTF8_DIAMETER "<>");
448521    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
449522
450    ldim = adg_ldim_new_full_from_model(model, "DHOLE", "-DHOLE", "-West",
523    ldim = adg_ldim_new_full_from_model(model, "D3I_Y", "-D3I_Y", "-West",
451524                                        ADG_DIR_LEFT);
525    adg_dim_set_limits(ADG_DIM(ldim), "-0.25", NULL);
526    adg_dim_set_level(ADG_DIM(ldim), 3);
452527    adg_dim_set_value(ADG_DIM(ldim), ADG_UTF8_DIAMETER "<>");
453528    adg_container_add(ADG_CONTAINER(canvas), ADG_ENTITY(ldim));
454529}
...... 
488563    adg_container_add(container, entity);
489564
490565    entity = ADG_ENTITY(adg_hatch_new(ADG_TRAIL(part->hatch)));
566    adg_container_add(container, entity);
567
568    entity = ADG_ENTITY(adg_stroke_new(ADG_TRAIL(part->hatch_edge)));
491569    adg_container_add(container, entity);
492570
493571    entity = ADG_ENTITY(adg_stroke_new(ADG_TRAIL(part->edges)));
...... 
497575    _adg_demo_canvas_add_dimensions(canvas, ADG_MODEL(part->shape));
498576    _adg_demo_canvas_add_stuff(canvas, ADG_MODEL(part->shape));
499577
500    cairo_matrix_init_translate(&map, 160, 160);
578    cairo_matrix_init_translate(&map, 140, 180);
501579    cairo_matrix_scale(&map, 8, 8);
502580    adg_entity_set_local_map(ADG_ENTITY(container), &map);
503581
...... 
546624
547625    _adg_part_lock(part);
548626
549    adg_model_clear(ADG_MODEL(part->shape));
550    _adg_define_shape(part->shape, part);
551    adg_model_changed(ADG_MODEL(part->shape));
627    adg_model_reset(ADG_MODEL(part->shape));
628    adg_model_reset(ADG_MODEL(part->hatch));
629    adg_model_reset(ADG_MODEL(part->hatch_edge));
630    adg_model_reset(ADG_MODEL(part->edges));
552631
553    adg_model_clear(ADG_MODEL(part->hatch));
554    _adg_define_hatch(part->hatch, part);
555    adg_model_changed(ADG_MODEL(part->hatch));
632    _adg_part_define_shape(part);
633    _adg_part_define_hatch(part);
556634
557    adg_model_clear(ADG_MODEL(part->edges));
635    adg_model_changed(ADG_MODEL(part->shape));
636    adg_model_changed(ADG_MODEL(part->hatch));
637    adg_model_changed(ADG_MODEL(part->hatch_edge));
558638    adg_model_changed(ADG_MODEL(part->edges));
559639
560640    gtk_widget_queue_draw(GTK_WIDGET(part->area));
...... 
763843    part->reset = (GtkButton *) gtk_builder_get_object(builder, "editReset");
764844    part->shape = adg_path_new();
765845    part->hatch = adg_path_new();
846    part->hatch_edge = adg_path_new();
766847    part->edges = adg_edges_new_with_source(ADG_TRAIL(part->shape));
767848
768849    g_assert(ADG_GTK_IS_AREA(part->area));
demo/adg-demo.ui.in
11991199    <property name="upper">24</property>
12001200    <property name="step_increment">0.1</property>
12011201    <property name="page_increment">1</property>
1202    <property name="value">8.5</property>
1202    <property name="value">8.3</property>
12031203  </object>
12041204  <object class="GtkAdjustment" id="adjLGROOVE">
12051205    <property name="lower">0.1</property>
12061206

Archive Download the corresponding diff file