/[mcclim]/mcclim/bezier.lisp
ViewVC logotype

Log of /mcclim/bezier.lisp

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Tag:

Revision 1.3 - (view) (annotate) - [select for diffs]
Tue Jul 17 06:36:01 2007 UTC (6 years, 9 months ago) by crhodes
Branch: MAIN
CVS Tags: HEAD, McCLIM-0-9-5, McCLIM-0-9-6
Changes since 1.2: +20 -16 lines
Diff to previous 1.2
In bezier area/curve convolution, don't put the area (pen) down quite so
often: reduces redundant areas in unions from draw-path in gsharp.

(Also rename convlute -> convolve)

Revision 1.2 - (view) (annotate) - [select for diffs]
Wed Jul 11 15:26:20 2007 UTC (6 years, 9 months ago) by crhodes
Branch: MAIN
Changes since 1.1: +123 -173 lines
Diff to previous 1.1
Bezier designs which draw in the right place in all backends (I think).

The implementation prior to this worked for the replay on an
output-recording stream, and probably worked for the first draw using
the pixmap (fall-through) rendering method.  It did not work for the
first draw on a backend with native bezier drawing routines, basically
because the design was being passed through untransformed by the medium
transformation.  So:

* define a method on medium-draw-bezier-design* specialized on
  transform-coordinates-mixin, to transform the region appropriately
  before passing down to backend-drawing functions.  This method runs
  after the output-recording-stream method, so sadly we're now doing
  some transformations twice.

* this implies deleting the translated-bezier-design class, as returning
  an object of a different class from transform-region meant that the
  idiom of doing
    (defmethod medium-draw-foo* :around ((medium t-c-mixin) foo)
      (let ((foo (transform-region (medium-transformation medium) foo)))
        (call-next-method medium foo)))
  would be in violation of the restriction that the set of applicable
  methods not change when using call next method.

* deleting the translated-bezier-design class would mean losing the
  cacheing of pixmap renderings, so restore that by keeping track of
  the original design in all bezier-design subclasses, and use that in
  ensure-pixmap.

* this on its own is still too slow, so for bezier-areas and
  bezier-unions additionally keep track of accumulated
  translation transformations, only performing the transformation of
  individual segments or areas when they are necessary.  (A similar
  approach could be used for differences, but I ran out of energy; we
  have however recovered most of the speed loss from the introduction of
  this extra correctness.)

* the Postscript and gtkairo backends, with their medium-draw-bezier*
  methods, needed some adjustment to perform the transformations
  themselves.

Please test!

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Dec 26 16:44:45 2006 UTC (7 years, 3 months ago) by dlichteblau
Branch: MAIN
CVS Tags: McCLIM-0-9-4, mcclim-0-9-4
With Robert Strandh's permission, move gsharp/bezier.lisp into McCLIM.

All symbols are still in the CLIMI package and undocumented, but should
ultimately move into CLIME or a new package.

Try CLIM-FIG or gsharp to test.

	* NEWS: updated.

	* mcclim.asd (CLIM-BASIC): Depend on flexichain.  Added bezier.lisp

	* bezier.lisp: New file, from gsharp.  Postscript methods taken out.

	* Backends/PostScript/graphics.lisp (MEDIUM-DRAW-BEZIER-DESIGN*):
	New methods, from gsharp/bezier.lisp.

	* Backends/gtkairo/cairo.lisp (MEDIUM-DRAW-BEZIER-DESIGN*): New
	methods.

	* Backends/gtkairo/ffi.lisp: regenerated.

	* Examples/clim-fig.lisp (DRAW-FIGURE, HANDLE-DRAW-OBJECT): Added
	a bezier drawing mode.

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5