| 2006-02-02 Keith Packard <keithp@keithp.com> |
| |
| * twin_fedit/twin-fedit.c: (dot), (spot): |
| Eliminate spurious segment by moving to initial arc point |
| (sigh). |
| |
| 2006-02-02 Carl Worth <cworth@cworth.org> |
| |
| * twin_fedit/Makefile: Add x11 as a required package, (cairo no |
| longer pulls this in by default). |
| |
| * twin_fedit/twin-fedit.c: (init), (read_char), (dot), (spot), |
| (draw_char), (pos_to_cmd), (replace_with_spline), (main): Track |
| changes in cairo API to bring forward to be compatible with cairo |
| 1.0.x. Remove some unused variables. |
| |
| * twin_fedit/twin-fedit.h: Add missing includes of cairo-xlib.h, |
| X11/Xutil.h, and string.h. |
| |
| * twin_fedit/twin-sfit.c: (new_pts), (add_pt), (fit): Add missing |
| return value and remove unused variables. |
| |
| 2004-10-29 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| add demoline + demospline |
| |
| * twin.h: |
| * twin_box.c: (_twin_box_dispatch): |
| * twin_clock.c: (twin_clock_hand), (_twin_clock_face): |
| * twin_convolve.c: (_twin_subpath_convolve): |
| * twin_demo.c: (twin_line_start), (twin_circletext_start), |
| * twin_draw.c: (twin_composite): |
| * twin_font.c: (_twin_text_compute_pen): |
| * twin_label.c: (_twin_label_paint), (_twin_label_init): |
| * twin_path.c: (twin_path_circle), (twin_path_ellipse), |
| (twin_path_arc), (twin_path_rectangle), |
| (twin_path_rounded_rectangle), (twin_path_lozenge), |
| (twin_path_tab), (twin_path_set_cap_style), |
| (twin_path_current_cap_style), (twin_path_create), |
| (twin_composite_stroke): |
| (twin_quickbrown_start), (twin_ascii_start), (twin_demo_start): |
| * twin_widget.c: (_twin_path_shape), (_twin_widget_paint_shape), |
| (_twin_widget_paint), (_twin_widget_init), |
| (_twin_path_bevel_shape): |
| * twinint.h: |
| Add cap styles, widget shapes, text alignment and arcs |
| Change circle/ellipse API. |
| |
| * twin_button.c: (_twin_button_dispatch): |
| Capture button events. |
| |
| * twin_calc.c: (twin_calc_start): |
| Use Lozenge shape for output |
| |
| * twin_demoline.c: (_twin_demoline_paint), |
| (_twin_demoline_update_pos), (_twin_demoline_hit), |
| (_twin_demoline_dispatch), (_twin_demoline_init), |
| (twin_demoline_create), (twin_demoline_start): |
| * twin_demoline.h: |
| Drag lines with the mouse |
| |
| * twin_demospline.c: (_twin_demospline_paint), |
| (_twin_demospline_update_pos), (_twin_demospline_hit), |
| (_twin_demospline_dispatch), (_twin_demospline_init), |
| (twin_demospline_create), (twin_demospline_start): |
| * twin_demospline.h: |
| drag splines with the mouse |
| |
| * twin_glyphs.c: |
| move '1' right a bit |
| |
| * twin_toplevel.c: (_twin_toplevel_event): |
| Convert dispatch result to boool |
| |
| * twin_window.c: (twin_window_create), (twin_window_dispatch): |
| was mis-computing delegate and crashing when window->event was NULL |
| |
| * twin_x11.c: (twin_x11_read_events): |
| Map X button info to twin mask |
| |
| * xtwin.c: (main): |
| draw different stuff. |
| |
| 2004-10-27 Keith Packard <keithp@keithp.com> |
| |
| * twin_box.c: (_twin_box_dispatch): |
| Boxes have no paint |
| |
| * twin_clock.c: (twin_clock_set_transform), (twin_clock_hand), |
| (_twin_clock_face), (_twin_clock_interval), (_twin_clock_paint), |
| (_twin_clock_timeout), (_twin_clock_dispatch), (_twin_clock_init), |
| (twin_clock_create), (twin_clock_start): |
| * twin_clock.h: |
| Convert to a widget |
| |
| * twin_widget.c: (_twin_widget_paint): |
| Always paint background, even if transparent |
| |
| * xtwin.c: (main): |
| show clock widget |
| |
| 2004-10-27 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| Add calculator and missing header files |
| |
| * twin.h: |
| * twin_box.c: (_twin_box_init), (_twin_box_query_geometry), |
| (_twin_box_configure), (_twin_box_dispatch), (twin_box_create): |
| * twin_button.c: (_twin_button_dispatch), (_twin_button_init): |
| * twin_toplevel.c: (_twin_toplevel_init): |
| * twin_widget.c: (_twin_widget_dispatch), (_twin_widget_init), |
| * twin_label.c: (_twin_label_query_geometry), |
| (_twin_label_dispatch), (_twin_label_init): |
| * twinint.h: |
| (twin_widget_create): |
| Change type name from twin_layout_t to twin_box_dir_t |
| Create new twin_widget_layout_t holding layout preferences. |
| Add copy_geom field to widget to make widgets look the same |
| Add button signals and signal proc. |
| Fix box layout to sum stretch along axis and minimize normal |
| |
| * twin_calc.c: (_twin_calc_button_to_id), |
| (_twin_calc_update_value), (_twin_calc_push), (_twin_calc_pop), |
| (_twin_calc_digit), (_twin_calc_button_signal), (twin_calc_start): |
| * twin_calc.h: |
| * xtwin.c: (main): |
| Add calculator demo |
| |
| 2004-10-26 Keith Packard <keithp@keithp.com> |
| |
| * twin_button.c: (_twin_button_paint): |
| * twin_widget.c: (_twin_widget_bevel): |
| * twinint.h: |
| Move bevel routine to twin_widget for sharing |
| |
| * twin_dispatch.c: (twin_dispatch): |
| Change order of timeout vs work, making work come last as |
| that's where redisplay occurs. |
| |
| * twin_draw.c: (twin_fill): |
| Oops. Argument order wrong in twin_pixmap_damage call |
| |
| * twin_hello.c: (twin_hello_start): |
| Make button italic to test |
| |
| * twin_pixmap.c: (twin_pixmap_damage): |
| Change names of formals to match prototype |
| |
| 2004-10-26 Keith Packard <keithp@keithp.com> |
| |
| * twin_button.c: (_twin_button_paint): |
| Paint polygons instead of stroked lines for button edges |
| |
| * twin_font.c: (_twin_text_compute_info): |
| Snap origin to pixel grid |
| |
| * twin_hello.c: (_twin_hello_timeout): |
| Strip newline from ctime output |
| |
| 2004-10-26 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin_button.c: (_twin_button_paint), |
| (_twin_button_set_label_offset), (_twin_button_dispatch), |
| (_twin_button_init), (twin_button_create): |
| Add button widget |
| |
| * twin.h: |
| * twinint.h: |
| Grab button down inside client area. |
| Add button widget |
| |
| * twin_hello.c: (twin_hello_start): |
| * twin_hello.h: |
| Test button widget |
| |
| * twin_label.c: (_twin_label_paint), (_twin_label_init), |
| (twin_label_create): |
| Permit subclassing; add offset to make text shift in button |
| |
| * twin_widget.c: (_twin_widget_contains): |
| Add _twin_widget_contains to test inclusion |
| |
| * twin_window.c: (twin_window_create), (twin_window_dispatch): |
| Grab button down inside client area |
| |
| * xtwin.c: (main): |
| Make hello window larger |
| |
| 2004-10-25 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin.h: |
| * twin_box.c: (_twin_box_init), (_twin_box_query_geometry), |
| (_twin_box_configure), (_twin_box_xy_to_widget), |
| (_twin_box_dispatch), (twin_box_create): |
| * twin_label.c: (_twin_label_query_geometry), (_twin_label_paint), |
| (_twin_label_dispatch), (twin_label_set), (_twin_label_init), |
| (twin_label_create): |
| * twin_toplevel.c: (_twin_toplevel_dispatch), |
| (_twin_toplevel_event), (_twin_toplevel_draw), |
| (_twin_toplevel_destroy), (_twin_toplevel_init), |
| (twin_toplevel_create), (_twin_toplevel_paint), |
| (_twin_toplevel_queue_paint), (_twin_toplevel_layout), |
| (_twin_toplevel_queue_layout), (twin_toplevel_show): |
| * twin_widget.c: (_twin_widget_paint), (_twin_widget_dispatch), |
| (_twin_widget_init), (_twin_widget_queue_paint), |
| (_twin_widget_queue_layout), (twin_widget_create), |
| (twin_widget_set): |
| * twinint.h: |
| Add initial widget implementation. |
| |
| * twin_glyphs.c: |
| Fix numbers to have the same width. |
| |
| * twin_pixmap.c: (twin_pixmap_set_clip): |
| Add new relative-origin clip setting function |
| |
| * twin_screen.c: (twin_screen_set_active), (twin_screen_dispatch): |
| * twin_window.c: (twin_window_create), (twin_window_style_size), |
| (twin_window_draw), (twin_window_dispatch): |
| * twin_x11.c: (twin_x11_read_events): |
| * twin_clock.c: (twin_clock_start): |
| * twin_demo.c: (twin_example_start), (twin_line_start), |
| (twin_circletext_start), (twin_quickbrown_start), |
| (twin_ascii_start), (twin_jelly_start): |
| * twin_text.c: (twin_text_start): |
| Change enumerated constants to include Twin prefix |
| |
| * twin_hello.c: (_twin_hello_timeout), (twin_hello_start): |
| Add new widget-based demo |
| |
| * xtwin.c: (main): |
| Start widget based demo |
| |
| 2004-10-25 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * configure.ac: |
| * twin_dispatch.c: (twin_dispatch): |
| * twin_file.c: (_twin_file_order), (_twin_run_file), |
| (twin_set_file), (twin_clear_file): |
| * twin_queue.c: (_twin_queue_insert), (_twin_queue_remove), |
| (_twin_queue_delete), (_twin_queue_set_order), |
| (_twin_queue_review_order): |
| * twin_timeout.c: (_twin_timeout_order), (_twin_queue_timeout), |
| (_twin_run_timeout), (twin_set_timeout), (twin_clear_timeout), |
| (_twin_timeout_delay), (twin_now): |
| * twin_work.c: (_twin_work_order), (_twin_queue_work), |
| (_twin_run_work), (twin_set_work), (twin_clear_work): |
| * twinint.h: |
| Add dispatch stuff to manage timeouts, workprocs and files. |
| Remove thread stuff |
| |
| * twin.h: |
| * twin_clock.c: (twin_clock_set_transform), (twin_clock_hand), |
| (twin_clock_minute_angle), (twin_clock_face), (twin_clock_timeout), |
| (twin_clock_start): |
| * twin_clock.h: |
| * twin_demo.c: (twin_example_start), (twin_line_start), |
| (twin_circletext_start), (twin_quickbrown_start), |
| (twin_ascii_start), (twin_jelly_start), (twin_extents_start), |
| (twin_demo_start): |
| * twin_demo.h: |
| * twin_text.c: (twin_text_start): |
| * twin_text.h: |
| * xtwin.c: (main): |
| Split demos into separate files |
| |
| * twin_draw.c: (twin_composite), (twin_fill): |
| Make drawing origin match clip rectangle. |
| |
| * twin_fedit |
| Add glyph editor to CVS to preserve it |
| |
| * twin_icon.c: (twin_icon_draw): |
| Add scalable icons |
| |
| * twin_path.c: (_twin_path_sfinish), (_twin_path_smove), |
| (twin_path_close), (twin_path_circle), (twin_path_ellipse), |
| (twin_path_append), (twin_composite_path): |
| Separate 'closing' a subpath from 'finishing' a subpath; the |
| former adds a point back to the start while the latter just |
| leaves the path unclosed and prepares for a new subpath. |
| |
| * twin_pixmap.c: (twin_pixmap_create), (twin_pixmap_show), |
| (twin_pixmap_hide), (twin_pixmap_clip), (twin_pixmap_current_clip), |
| (twin_pixmap_restore_clip), (twin_pixmap_reset_clip), |
| (twin_pixmap_damage), (twin_pixmap_move): |
| * twin_poly.c: (_twin_edge_build), (_span_fill), (_twin_edge_fill), |
| (twin_fill_path): |
| * twin_screen.c: (twin_screen_create): |
| Eliminate locking, add clipping. |
| |
| * twin_window.c: (twin_window_create), (twin_window_configure), |
| (twin_window_frame): |
| Clean up title drawing, use clipping |
| |
| * twin_x11.c: (twin_x11_read_events), (twin_x11_work), |
| (twin_x11_create), (twin_x11_destroy), (twin_x11_damage): |
| * twin_x11.h: |
| Eliminate locking, use dispatch stuff |
| |
| 2004-10-05 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin.h: |
| * twin_pattern.c: (twin_make_pattern): |
| * twin_pixmap.c: (twin_pixmap_create_const): |
| Add patterns. |
| |
| * twin_screen.c: (twin_screen_create), (twin_screen_update), |
| (twin_screen_set_background), (twin_screen_get_background): |
| Add screen backgrounds |
| |
| * twin_window.c: (twin_window_create), (twin_window_style_size), |
| (twin_window_frame), (twin_window_draw): |
| Eliminate spurious border bits |
| |
| * xtwin.c: (twin_clock), (twin_text_app), (twin_start_clock), |
| (main): |
| Add text display applet |
| |
| 2004-10-05 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin.h: |
| * twin_draw.c: (twin_fill): |
| * twin_path.c: (twin_composite_path): |
| * twin_pixmap.c: (twin_pixmap_create), (twin_pixmap_show), |
| (twin_pixmap_hide), (_twin_pixmap_fetch), |
| (twin_pixmap_transparent), (twin_pixmap_move), |
| (twin_pixmap_dispatch): |
| * twin_screen.c: (twin_screen_create), (twin_screen_lock), |
| (twin_screen_unlock), (twin_screen_update), |
| (twin_screen_set_active), (twin_screen_get_active), |
| (twin_screen_dispatch): |
| * twin_thread.c: (twin_mutex_init), (twin_mutex_lock), |
| (twin_mutex_unlock), (twin_cond_init), (twin_cond_broadcast), |
| (twin_cond_wait), (twin_thread_create): |
| * twin_window.c: (twin_window_create), (twin_window_destroy), |
| (twin_window_show), (twin_window_hide), (twin_window_configure), |
| (twin_window_style_size), (twin_window_set_name), |
| (twin_window_frame), (twin_window_draw), (twin_window_dispatch): |
| * twin_x11.c: (_twin_x11_put_begin), (_twin_x11_put_span), |
| (twin_x11_damage_thread), (twin_x11_event_thread), |
| (twin_x11_screen_damaged), (twin_x11_create), (twin_x11_destroy): |
| * twin_x11.h: |
| * xtwin.c: (twin_clock_set_transform), (twin_clock_hand), |
| (twin_clock_face), (twin_clock), (twin_app_thread), |
| (twin_start_app), (twin_start_clock), (main): |
| Add the beginings of event dispatch and a bit of |
| window management including titles. Default event dispatcher |
| does restacking and motion. |
| |
| 2004-10-05 Keith Packard <keithp@keithp.com> |
| |
| * twin.h: |
| * twin_draw.c: (twin_composite), (twin_fill): |
| * twin_matrix.c: (twin_matrix_multiply), (twin_matrix_translate), |
| (twin_matrix_scale), (twin_matrix_rotate): |
| * twin_path.c: (twin_path_ellipse), (twin_path_set_font_style), |
| (twin_composite_path), (twin_composite_stroke): |
| * twin_pixmap.c: (twin_pixmap_create), (twin_pixmap_pointer), |
| (twin_pixmap_damage), (twin_pixmap_move): |
| * twin_poly.c: (twin_fill_path): |
| * twin_screen.c: (twin_screen_create), (twin_screen_damage), |
| (twin_screen_resize), (twin_screen_update): |
| * twin_x11.c: (_twin_x11_put_begin), (_twin_x11_put_span): |
| * twinint.h: |
| Update API to use twin_ types for most everything. |
| |
| * twin_font.c: (_twin_text_compute_info), |
| (_twin_text_compute_snap), (_twin_text_compute_pen), (_twin_snap), |
| (twin_has_ucs4), (_twin_glyph_width), (twin_text_metrics_ucs4), |
| (twin_path_ucs4): |
| Rework snapping to correctly snap vertical and horizontal text |
| on pixel boundaries. |
| |
| * xtwin.c: (main): |
| Change clock watermark |
| |
| 2004-10-04 Keith Packard <keithp@keithp.com> |
| |
| * twin_primitive.c: (in_over), (over): |
| * twinint.h: |
| Recognize a few special cases to speed up operations |
| |
| * xtwin.c: (twin_clock_set_transform), (twin_clock_minute_angle), |
| (twin_clock_face), (twin_clock): |
| Fix angular problems in hand position by rotating everything 90 |
| degrees. |
| |
| 2004-10-04 Keith Packard <keithp@keithp.com> |
| |
| * twin_font.c: (twin_has_ucs4), (twin_path_ucs4): |
| Delete old glyph representation support code. |
| |
| * twin_geom.c: (_twin_distance_to_line_squared): |
| Oops -- overflow not handled correctly in distance functions. |
| |
| * twin_glyphs.c: |
| Replace new glyphs with versions using splines. |
| |
| * xtwin.c: (main): |
| Whack around the default presentation a bit more |
| |
| 2004-10-04 Keith Packard <keithp@keithp.com> |
| |
| * twin.h: |
| * twin_draw.c: (twin_composite): |
| Fix a clipping bug |
| |
| * twinint.h: |
| * twin_font.c: (_snap), (_twin_g_base), (_twin_pen_size), |
| (twin_text_metrics_ucs4), (twin_add_snap), (twin_n_in_spline), |
| (twin_spline_fit), (_ucs4_string), (px), (py), (twin_dump_glyphs), |
| (twin_path_ucs4), (twin_text_metrics_utf8): |
| * twin_glyphs.c: |
| Change glyph representation to allow splines and include metrics. |
| |
| * twin_matrix.c: (_twin_matrix_expand): |
| * twin_path.c: (twin_path_rmove), (twin_path_rdraw): |
| Add some new helper functions. |
| |
| * twin_spline.c: |
| Expose _twin_path_scurve for glyphs |
| |
| * twin_trig.c: |
| Increase sin table precision. |
| |
| * twin_x11.c: (_twin_x11_put_span), (twin_x11_screen_damaged), |
| (twin_x11_damage): |
| Fix off-by-one error in y position. |
| Lock screen while adding expose damage |
| |
| * xtwin.c: (twin_clock_face), (twin_clock), (main): |
| Change clock appearance. Use corrected glyph metrics |
| |
| 2004-10-01 Keith Packard <keithp@keithp.com> |
| |
| * twin.h: |
| * twin_fixed.c: |
| * twin_font.c: (twin_text_metrics_ucs4), (twin_path_ucs4), |
| (twin_text_metrics_utf8): |
| * twin_screen.c: (twin_screen_create), (twin_screen_update): |
| * twin_x11.c: (_twin_x11_put_begin), (_twin_x11_put_span), |
| * twin_x11.h: |
| (twin_x11_create): |
| Add put_begin to screen structure so that the backend can batch |
| updates. |
| Add twin_int_to_fixed. |
| Inline twin_fixed_mul and twin_fixed_div using int64_t. |
| Add twin_text_metrics_utf8. |
| Hard-code the max number of vertices in a glyph. |
| Set various ICCCM properties to make X wms happy. |
| |
| * twin_path.c: (_twin_matrix_max_radius), (twin_path_circle): |
| Use better approximation of ellipse major axis radius when |
| drawing circles. |
| |
| * twin_poly.c: (_twin_edge_fill): |
| Compiler warning. |
| |
| * twinint.h: |
| Delete duplicate twin_over definition |
| |
| * xtwin.c: (twin_clock_hand), (twin_clock_face), (twin_clock), |
| (twin_app_thread), (twin_start_app), (twin_start_clock), (main): |
| Allow for multiple clocks, and add watermark. Note that |
| text metrics are quite broken currently. |
| |
| 2004-09-30 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * configure.ac: |
| * twin.h: |
| * twin_draw.c: (twin_composite), (twin_fill): |
| * twin_font.c: (_snap), (_twin_pen_size), (twin_text_metrics_ucs4), |
| (twin_path_ucs4), (twin_width_utf8): |
| Handle unhinted text. |
| |
| * twin_path.c: (twin_path_close), (twin_path_bounds), |
| (twin_composite_path), (twin_paint_path), (twin_composite_stroke), |
| (twin_paint_stroke): |
| Add helper functions |
| |
| * twin_pixmap.c: (twin_pixmap_create), (twin_pixmap_show), |
| (twin_pixmap_hide), (twin_pixmap_enable_update), |
| (twin_pixmap_disable_update), (twin_pixmap_lock), |
| (twin_pixmap_unlock): |
| Lock pixmaps during drawing |
| |
| * twin_poly.c: (_twin_edge_build), (twin_fill_path): |
| * twin_screen.c: (twin_screen_create), (twin_screen_lock), |
| (twin_screen_unlock), (twin_screen_register_damaged), |
| (twin_screen_enable_update), (twin_screen_disable_update), |
| (twin_screen_damage), (twin_screen_update): |
| Disable screen updates while applications are busy |
| |
| * twin_x11.c: (twin_x11_damage_thread), (twin_x11_event_thread), |
| (twin_x11_screen_damaged), (twin_x11_create), (twin_x11_destroy): |
| Add threads to manage events and redisplay |
| |
| * twinint.h: |
| * xtwin.c: (twin_clock_hand), (twin_clock_minute_angle), |
| (twin_clock_face), (twin_clock), (main): |
| Paint a clock |
| |
| 2004-09-27 Keith Packard <keithp@keithp.com> |
| |
| * twin.h: |
| * twin_fixed.c: (twin_fixed_div), (twin_fixed_sqrt), |
| (_twin_sfixed_sqrt): |
| Add some more fixed point functions |
| |
| * twin_font.c: (_snap), (_add_snap), (_twin_pen_size), |
| (twin_text_metrics_ucs4), (twin_path_ucs4), (twin_width_ucs4): |
| Reimplement text snapping. Note that things are snapped to |
| user units, not pixels. Snapping to pixels requires some |
| thought about rotating transformations. |
| |
| * twin_matrix.c: (_twin_matrix_len): |
| * twin_path.c: (twin_path_close), (twin_path_circle): |
| Oops. Closed paths don't necessarily need to join ends, |
| but circles do. |
| |
| * twinint.h: |
| * xtwin.c: (main): |
| Random new tests. |
| |
| 2004-09-27 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin.h: |
| * twin_convolve.c: (_twin_path_leftpoint), (_around_order), |
| (_angle), (_twin_subpath_convolve): |
| * twin_fixed.c: (twin_fixed_mul): |
| * twin_font.c: (twin_path_ucs4), (twin_width_ucs4), |
| (twin_path_utf8): |
| * twin_geom.c: (_twin_distance_to_point_squared), |
| (_twin_distance_to_line_squared): |
| * twin_hull.c: (_twin_slope_init), (_twin_hull_create), |
| (_twin_hull_vertex_compare), (_twin_hull_eliminate_concave), |
| (_twin_hull_to_path): |
| * twin_matrix.c: (_twin_dump_matrix), (_twin_matrix_multiply), |
| (twin_matrix_identity), (twin_matrix_translate), |
| (twin_matrix_scale), (_twin_matrix_determinant), |
| (twin_matrix_rotate), (_twin_matrix_x), (_twin_matrix_y), |
| (_twin_matrix_dx), (_twin_matrix_dy): |
| * twin_path.c: (_twin_current_subpath_len), |
| (_twin_path_current_spoint), (_twin_path_subpath_first_spoint), |
| (_twin_path_smove), (_twin_path_sdraw), (twin_path_move), |
| (twin_path_draw), (twin_path_close), (twin_path_circle), |
| (twin_path_set_matrix), (twin_path_current_matrix), |
| (twin_path_identity), (twin_path_translate), (twin_path_scale), |
| (twin_path_rotate), (twin_path_set_font_size), |
| (twin_path_current_font_size), (twin_path_set_font_style), |
| (twin_path_current_font_style), (twin_path_append), |
| (twin_path_save), (twin_path_restore), (twin_path_create): |
| * twin_poly.c: (_edge_step_by), (_twin_sfixed_grid_ceil), |
| (_twin_edge_build), (_span_fill), (_twin_edge_fill), |
| (twin_fill_path): |
| * twin_spline.c: (_lerp_half), (_de_casteljau), |
| (_twin_spline_decompose), (_twin_path_scurve), (twin_path_curve): |
| * twin_trig.c: (twin_sin), (twin_cos), (twin_tan): |
| * twinint.h: |
| * xtwin.c: (main): |
| Add affine transformation support. |
| Fix convex hull to eliminate all points colinear with extreme. |
| Note that text snapping is currently broken. |
| |
| 2004-09-26 Keith Packard <keithp@keithp.com> |
| |
| * twin_convolve.c: (_twin_subpath_convolve): |
| Eliminate special case for closed paths. Just draw caps at |
| both ends and accept that the resulting path isn't minimal |
| in all cases. This eliminates the weird results from said |
| attempted minimal path with large pens and small curves. |
| It also eliminated a lot of extra code from this function. |
| |
| * twin_font.c: (twin_path_ucs4): |
| Fix font baseline value (should be 9). Take pen size |
| into account when computing positions so that glyphs rest |
| on the baseline instead of painting on top of it. |
| |
| * xtwin.c: (main): |
| Show baseline in huge text sample |
| |
| 2004-09-26 Keith Packard <keithp@keithp.com> |
| |
| * twin.h: |
| * twin_convolve.c: (_twin_path_leftpoint), (_twin_path_step), |
| (_twin_subpath_convolve): |
| Hmm. Not sure this is right, but I'm giving it a try. |
| Recognize closed paths and attempt to construct two |
| disjoint paths as their convolution with the pen. This |
| appears to break when the path has a radius of curvature smaller |
| than the radius of the pen. I'm committing it to CVS mostly |
| so I don't lose the code; I will shortly commit a patch which |
| eliminates the check for a closed path. |
| |
| Oh, one correct change is to _twin_path_leftpoint which used |
| to try to be clever about point selection. Now that pens are |
| forced to be convex, the correct point to use is the one furthest |
| from the line. |
| |
| * twin_path.c: (twin_path_fill), (twin_path_append): |
| Ignore subpaths containing a single point. |
| Add 'twin_path_append' to glue one path into another. |
| |
| * twin_poly.c: (_twin_edge_build), (_twin_edge_fill): |
| Add debug output that shows vertices of polygons |
| |
| * xtwin.c: (main): |
| Code to test convolution change mentioned above |
| |
| 2004-09-25 Keith Packard <keithp@keithp.com> |
| |
| * twin_font.c: |
| Spurious ) in file |
| |
| 2004-09-25 Keith Packard <keithp@keithp.com> |
| |
| * twin_font.c: (_snap), (twin_path_ucs4): |
| Reduce emboldening to +50% stroke thickness. |
| Clean up debug code. |
| Eliminate some dead code. |
| Try to adjust width computations a bit. Still not right. |
| * xtwin.c: (main): |
| draw in more colors |
| |
| 2004-09-24 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin.h: |
| Switch to just supporting stroke fonts |
| * twin_font.c: (twin_has_ucs4), (_twin_ucs4_base), |
| (_twin_ucs4_points), (twin_path_ucs4), (twin_ucs4_width), |
| (twin_path_string): |
| Finish needed stroke font API. |
| |
| * twin_glyphs.c: |
| Elimiate all but ascii glyphs, use offset table to |
| eliminate table of pointers (which can't be const) |
| |
| * twin_vera.c: |
| Remove twin_vera.c |
| |
| * twinint.h: |
| Change glyph structures around for offsets and ascii only |
| |
| * xtwin.c: (main): |
| Few more cases to show ascii text support |
| |
| 2004-09-24 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin_hull.c: (_twin_slope_init), (_twin_hull_create), |
| (_twin_slope_compare), (_twin_hull_vertex_compare), |
| (_twin_hull_prev_valid), (_twin_hull_next_valid), |
| (_twin_hull_eliminate_concave), (_twin_hull_to_path), |
| (twin_path_convex_hull): |
| Add convex hull algorithm from cairo sources. Used to |
| constrain pens to convex shapes so that the convolution |
| algorithm works correctly. |
| |
| * twin.h: |
| Reduce default tolerance to 1/16 of a pixel |
| |
| * twin_convolve.c: (_angle), (_twin_subpath_convolve), |
| (twin_path_convolve): |
| Use convex hull of pen. |
| |
| * twin_font.c: (compare_snap), (_snap), (_add_snap), |
| (twin_path_glyph), (twin_glyph_width), (twin_path_string): |
| Snap horizontal and vertical elements of glyphs to |
| pixel boundaries. Snap stem widths to integer amounts. |
| Add slanting and emboldening |
| |
| * twin_glyphs.c: |
| Add space and box |
| |
| * twin_primitive.c: |
| Avoid using __inline as it increases size dramatically |
| |
| * twin_spline.c: (_twin_spline_decompose): |
| Use <= tolerance_squared as that may be zero |
| |
| * xtwin.c: (main): |
| Swizzle code to show off recent changes |
| |
| 2004-09-23 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * configure.ac: |
| * twin.h: |
| Fix twin_fixed_floor to work for negative values correctly |
| Add twin_path_cur_point |
| |
| * twin_convolve.c: (_twin_path_step), (_around_order), (_angle), |
| (_twin_subpath_convolve), (twin_path_convolve): |
| fix twin_path_step to actually handle duplicate points. |
| Change 'clockwise' to 'around_order' so that all three possible |
| results are returned (clockwise, parallel and counterclockwise) |
| Handle disjoint strokes |
| |
| * twin_font.c: (twin_has_glyph), (twin_path_glyph), |
| (twin_glyph_width), (twin_path_string), (twin_path_fglyph), |
| (twin_path_ucs4), (_twin_utf8_to_ucs4), (twin_path_utf8): |
| Add outline and stroke font support (pick one and remove the other) |
| |
| * twin_glyphs.c: |
| Huge array of stroke fonts from Hershey. Pick appropriate subset |
| and remove extra glyphs (there are a lot here) |
| |
| * twin_path.c: (_twin_cur_subpath_len), (twin_path_cur_point), |
| (twin_path_move), (twin_path_draw), (twin_path_close): |
| Eliminate repeated move and close, eliminate duplicate draw. |
| |
| * twin_poly.c: (_twin_edge_build), (_span_fill), (_twin_edge_fill): |
| Add support for 1, 4, 16 and 64 samples. 16 appears to be the |
| magic sweet spot. |
| |
| * twin_ttf/Makefile.am: |
| * twin_ttf/Vera.ttf: |
| * twin_ttf/twin_ttf.c: (pos), (command), (cpos), (ucs4_to_utf8), |
| (glyph), (outline_moveto), (outline_lineto), (outline_conicto), |
| (outline_cubicto), (ucs_page), (ucs_first_in_page), (sanitize), |
| (facename), (convert_font), (main): |
| Convert "real" outline fonts to twin built-ins |
| |
| * twin_vera.c: |
| Converted version of Bitstream Vera Sans Roman |
| |
| * twinint.h: |
| * xtwin.c: (main): |
| |
| 2004-09-21 Keith Packard <keithp@keithp.com> |
| |
| * twin.h: |
| * twinint.h: |
| Add a few definitions |
| |
| * twin_convolve.c: (_twin_path_leftpoint), (twin_path_convolve): |
| Find pen starting point as closest to the normal to the path. |
| Restructure convolve loop to be easier to understand |
| |
| * twin_path.c: (twin_path_circle): |
| Round circle coordinates instead of truncating them |
| |
| * twin_poly.c: (_twin_fixed_grid_ceil), (_twin_edge_build), |
| (_span_fill), (_twin_edge_fill): |
| Move sample grid by 1/2 sample step. |
| Clip polygons to mask pixmap. |
| Modest performance improvement in span filling. |
| Fix end case to remove edges before stepping. |
| |
| * xtwin.c: (main): |
| Stroke a path. |
| |
| 2004-09-21 Keith Packard <keithp@keithp.com> |
| |
| * Makefile.am: |
| * twin.h: |
| * twin_convolve.c: (_twin_path_leftmost), (_twin_path_step), |
| (_clockwise), (twin_path_convolve): |
| Add convolution. Pen starting position needs work. |
| |
| * twin_geom.c: (_twin_distance_to_point_squared), |
| (_twin_distance_to_line_squared): |
| * twin_spline.c: (_twin_spline_error_squared), (twin_path_curve): |
| * twinint.h: |
| Move shared geometric functions to new file |
| |
| * twin_path.c: (_sin), (_cos), (twin_path_circle), |
| (twin_path_fill): |
| Add twin_path_circle to generate pens. |
| Fix path edge generator to handle last subpath right. |
| |
| * twin_poly.c: (_twin_edge_build): |
| Skip vertices which don't span a sample row |
| |
| * xtwin.c: (main): |
| test convolutions |
| |
| 2004-09-20 Keith Packard <keithp@keithp.com> |
| |
| * .cvsignore: |
| Add .cvsignore file |
| |
| * architecture: |
| Mention path primitives |
| * Makefile.am: |
| * twin.h: |
| * twinint.h: |
| Add paths |
| |
| * twin_draw.c: (twin_composite): |
| Eliminate some unused variables. |
| |
| * twin_path.c: (twin_path_move), (twin_path_draw), |
| (twin_path_close), (twin_path_fill), (twin_path_empty), |
| (twin_path_create), (twin_path_destroy): |
| Simple path construction |
| |
| * twin_poly.c: (_edge_compare_y), (_edge_step_by), (_dump_edge), |
| (_twin_edge_build), (_span_fill), (_twin_edge_fill), |
| (twin_polygon): |
| Anti-aliased polygon fill code |
| |
| * twin_screen.c: |
| Change twin_bool to twin_bool_t |
| |
| * twin_spline.c: (_lerp_half), (_de_casteljau), |
| (_distance_squared_to_point), (_distance_squared_to_segment), |
| (_twin_spline_error_squared), (_twin_spline_decompose), |
| (twin_path_curve): |
| Append cubic Bézier splines to paths |
| |
| * xtwin.c: (main): |
| Test paths |