libera/#clim - IRC Chatlog
Search
15:14:24
lukego
Hey should (replay-output-record (with-output-to-output-record ...code...)) give the same results as just ...code... itself? i.e. should capturing an output record and replaying it onto a sheet have the same effect as just drawing straight on the sheet?
15:15:41
beach
Usually drawing to a sheet is done when output recording is activated. Not so when output records are replayed.
15:16:53
beach
But if your sheet has output recording off, then that is exactly what happens when you replay the output records. CLIM dispatches on the type of output record and calls a drawing function on the sheet.
15:31:07
lukego
Yeah, I don't really understand your answer and will need to look it up, don't have a handle on how enabling/disabling output recording interacts with this stuff.
15:31:21
beach
In a display function, when you call a drawing function, two things happen. It is captured in an output record, and it is drawn to the sheet.
15:31:48
beach
When you expose a window that has been hidden, only the recorded output is used and replayed.
15:32:03
lukego
I also tried capturing an output record and then replaying it with a transformation in effect, expecting to see it transformed, but got an empty result. guessing it's the same issue i.e. for some reason the output record that is capured (and it is captured, I've poked it in the inspect) somehow doesn't do anything with replayed
15:33:07
beach
I forget what the spec says about what needs to be captured in an output record. You need to read it yourself if you want to know.
15:33:12
jackdaniel
in theory replaying output record that captured a drawing routine should have the same effect as the original drawing
15:34:24
beach
So that would explain why it won't work to replay output records with a different transformation.
15:39:07
beach
lukego: There is a fascinating chapter that describes the constellation of :AROUND methods on the drawing functions and how the flags (stream-recording, stream-drawing?) are consulted.
15:39:27
lukego
my mental model was that replaying the output record would effectively repeat the drawing operation, which would use the originally-transformed parameters, which would combine with the now-effective parameters, to effectively (...) use both transformations
15:41:05
jackdaniel
you may hack your way by modifying the device transformation, but that's not portable and you'll probably have some bumps around the road with nobody to help you with that
15:42:18
jackdaniel
another way would be adding a mixin to your record that allows you to add another transformation in replay-output-record
15:42:56
jackdaniel
one thing to like or hate with mcclim is that it is easy to hack your way from many things
15:43:55
lukego
I guess what I'm lacking is a sense of whether or not I am actually on a sane path i.e. whether CLIM output records to make a suitable intermediate representation (so to speak) for 2D CAD data or whether I should be doing more directly in the application and then rendering to CLIM as a later step
15:44:38
jackdaniel
as I've mentioned, you may create your own instances of output records and define replay-output-record methods - maybe that will work better for you
15:44:40
lukego
CLIM has been helpful because the transformations are actually useful for writing my drawing routines and it's great that they are expanded out in the output records, so that once drawing is done I can work with absolute coordinates and not worry about transforms anymore
15:46:27
jackdaniel
you may also modify the output record transformation by setfing (climi::graphics-state-transformation record) ;; another hacky way
17:39:30
jackdaniel
lukego: one missing part (perhaps) is the fact, that it is not replay-output-record who "resets" the transformation to the identity upon replay, it is the function REPLAY