freenode/#clim - IRC Chatlog
Search
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.
16:08:15
nyef
So the swizzling needs to be done with respect to the sheet-mirrored-ancestor in all cases, doesn't it?
16:10:36
beach
I don't remember the details. But there are extensive comments for that code, and I found it quite understandable.
16:54:17
fittestbits
Have a problem with both CLX-fb and Mezzano. In the backends, the medium is a subclass of render-medium-mixin and basic-medium. render-medium-mixin is based on gs-...-mixins (gs = graphic-state).
16:55:33
fittestbits
For gs, fonts are list of (<family> <face> <size>), but other methods/functions expect standard-text-style objects.
16:56:36
fittestbits
I fixed one case text-style-to-font, but then another popped up. So I'm wondering if I should just keep going fixing them as they occur, or if there is something more basic broken
17:17:38
fittestbits
Maybe it's not so bad - fixed a second case and now the German Towns demo is displaying text OK. Maybe there aren't a lot of cases to fix ...
17:31:48
fittestbits
I added two new methods, text-style-to-font ((port ...) (style cons)) and text-style-size ((style cons)). That got things going, but I don't know if there are other places that will break under different code paths.
17:33:14
fittestbits
Those changes fixed the german towns demo on clx-fb. Still have a mezzano problem, but it's working better.
19:25:30
jackdaniel
heheh, I have a cool demo now. remember this "pane hierarchy" representation form before? I've added some commands and a hash table, and now I can move sheets from interactor in the second window and see how well it behaves
21:12:31
oleo
an application-pane is thought as the *standard-output* of the interactor-pane which is thought of as the *standard-input* in mcclim it seems
21:13:50
oleo
that's why frame-standard-input is specialized to interactor-pane and frame-standard-output is specialized to application-pane
22:09:23
jackdaniel
usually when you work on application panes you want to have different display-function's associated with them
22:12:09
oleo
yah, it's i'm just fixated to one way of setting up panes, and i'm now discovering many other ways.....