freenode/#clim - IRC Chatlog
Search
8:44:47
jackdaniel
nyef: in ideal world: analysis what spec calls for and what mcclim implements and after that protocol documentation taking that into account with short summary: does McCLIM the right thing? are there alternative interpretations? what are possible improvements?
12:40:40
loke
However, it turns out that it's quite limited. There is a lot of code, but most of it is maths related. There quite a bit of stuff there, but the CLIM stuff is acutally quite basic. It can render fractions, exponents etc, but nothing more advanced than that. A sum, for example, is completely out of scope fo rit.
13:40:51
jackdaniel
http://hellsgate.pl/files/a05232d3 (example pane hierarchy with intervening mirrored and unmirrored sheets for documentation and backend tests) - red is mirrored, cyan is unmirrored
13:41:36
jackdaniel
when I think about it it would be nice to write code for inspector which provides similar representation of "live" frames, but I don't think I'm up to it
14:26:06
jackdaniel
OK, so I have written this application which allows me to peek which pane is a mirror and which is not (I've skipped all the stream stuff and subclassed gadget - I need only repaint right now)
14:26:26
jackdaniel
I've also hacked frame-manager to let me decide interactively which panes I want to mirror
14:34:08
beach
The problem is that a sheet can be bigger than what X11 can express, which is 65535 I think.
14:34:25
jackdaniel
(we have also "standard-fully-mirrored-sheet-mixin and it has update-mirror-geometry a lot of messy code, I'd guess this is the coordinate swizzling)
14:34:36
beach
Coordinate swizzling takes advantage of the fact that only a small part of the sheet can be visible.
14:39:07
beach
This discussion makes me want to rewrite the entire sheet geometry code from scratch. I am pretty sure I took all situations into account when I wrote it the first time, but you are right, stuff was added and modified afterwards.
14:40:54
beach
And a rewrite should probably start off without the caches for regions and transformations.
14:41:07
jackdaniel
I often think that I thought about all situations, but simple visualisation makes it obvious that I made some mistakes (for instance with ellipsis code - that was invaluable to start with tests)
14:41:44
jackdaniel
because we assume that (setf sheet-transformation/region) is setter and request at the same time
14:42:06
jackdaniel
imo this must be untangled into (setf …) which is a request, and %update- which sets the actual slot
14:42:57
jackdaniel
well, right now when you do (setf (sheet-region foo) …) then you: a) set the slot, b) set the geometry, c) invalidate caches, b) send a note that region has changed
14:44:13
jackdaniel
that leads to configuation event which calls (setf (sheet-region foo) …) with exception, that you dont send the request to the port (but mirror-geometry is calculated again)
14:44:58
jackdaniel
configuration event: updates slot, invalidates caches, updates geometry and sends the note
14:46:07
jackdaniel
but I need to experiment with it a little, also first I need to work on mixed-mirrored sheets
14:47:33
jackdaniel
basically we use the same interfaces to: a) request sheet region and b) update our internal state
15:19:57
nyef
X11 coordinates being (signed-byte 16) (or was it (unsigned-byte 16)?) should only matter when dealing with X11, which means during mirror realization and update, and in the mediums.
15:22:06
nyef
In a scroller-pane, for example, even if the viewport is way outside those bounds, the visible portion of the SCREEN is within them, and the mirror is configured in terms of the visible part on the screen, and the medium necessarily compensates for the coordinate change.