freenode/#clim - IRC Chatlog
Search
10:35:16
jackdaniel
so I was thinking about mirroring and clipping and I still see no relevance between multiple/single mirror configuration and clipping sheet output to visible area. we *can* make a mirror having size of a whole window (not larger) or to have size of visible area of the sheet (also not larger) and remove coordinate swizzling implementation as it is now (in favour of translating current sheet visible area
10:35:22
jackdaniel
coordinates to mirror coordinates (be it top-level-sheet mirror or a private sheet mirror)
10:36:43
jackdaniel
that has a certain appeal, but we need to keep in mind, that this approach will make scrolling and similar operations slower, because for each coordinate mapping change we will have to wipe mirror part reflecting the sheet area and draw it anew
10:38:05
jackdaniel
on the other hand we won't be bothered with drawing things which are not visible (what may speed some things up, depends how we draw - i.e if we draw line by line and we scroll (default behavior for seos), there won't be any speedup, because we need to update mirror on each draw (that will be slower than it is now)
10:39:26
beach
Suppose you have a non-top-level mirrored sheet that is larger than what X11 can handle. How do you make the coordinates in the sheet correspond to the coordinates in the mirror if you don't use coordinate swizzling?
10:41:10
jackdaniel
for that you need coordinate swizzling. but having mirrors for sheets which are non-top-level doesn't imply the assumption you make - namely that mirror has the same size as the sheet
10:41:48
jackdaniel
each sheet may have its own mirror used for displaying only the clipped area (so its size is always not bigger than the window)
10:42:56
beach
So if the mirror is smaller than the sheet, how do you make sheet coordinates correspond to mirror coordinates if you don't have coordinate swizzling?
10:43:39
beach
I mean, now there are more sheet coordinates than there are mirror coordinates, so you must somehow translate them.
10:44:48
beach
So you change that transformation when you need to draw on sheet coordinates that are not within the current range of the mirror?
10:45:21
jackdaniel
no, I change the transformation when we change sheet position related to the visible area (i.e scroll)
10:46:25
beach
Changing the position of a sheet as a result of scrolling is done by the sheet trransformation.
10:47:29
beach
And the sheet transformation determines the coordinates in the parent of the sheet (which is another sheet) of some object, given the coordinates in the sheet of that same object.
10:48:55
beach
So you would need a different kind of transformation that determines coordinates in the mirror from coordinates in the sheet.
10:49:27
jackdaniel
we have sheet-native-transformation and sheet-device-transformation for that and these are part of CLIM II specification
10:50:40
jackdaniel
and I still see no relevance on how this makes a situation different for single and multiple mirrors
10:51:15
beach
If you don't mirror the internal sheets, you will always ultimately draw using coordinates of the top-level sheet.
10:52:13
jackdaniel
and now we have two strategies: we do not swizzle coordinates, so top-level sheet grows until you hit 32k and error, or we do swizzle coordinates and keep in a mirror only visible area
10:52:18
beach
So unless your objects are larger than 32k pixels, you always have small coordinates.
10:53:54
beach
The cascading sheet transformations take care of that. That's what they are designed to do.
10:54:08
jackdaniel
so if you scroll some sheet which is a child of the top-level sheet you still must change its native transformation, and according to what you said, this is PRECISELY coordinate swizzling
10:55:01
jackdaniel
and if it is not, then doing the same if children sheet has a mirror is not either, because we are talking about the very same mechanism with different mirror root
10:55:10
beach
It is not, as coordinate swizzling is, designed to cope with the fact that X11 windows are smaller than the biggest sheet size.
10:56:22
jackdaniel
so as I've concluded today, I'm not convinced at all that there is any relevance between clipping visible area and single/multiple mirror configuration (and we have implemented single single mirroring which doesn't cause what you say what is the best proof that these things are not the same).
10:56:25
beach
Like I said yesterday, by coordinate swizzling I mean the code written by gilberth to cope with the fact that X11 windows are limited to 32k pixels. I do NOT means the sheet-transformation machinery that is specified in CLIM.
10:57:02
jackdaniel
OK, so you may use this sheet-transformation machinery to manage multiple mirrors the same way you have described managing top-level-sheet with single mirror
10:57:52
beach
Absolutely, as long as you also use coordinate swizzling, which I think is error prone and should be removed if possible.
10:59:09
beach
Here is a good definition of coordinate swizzling: It is when the mirror of a sheet has a different coordinate system than the sheet does.
10:59:30
jackdaniel
no, you talk about sheet-transformation (which is referring to parent coordinates) and I talk about sheet-device-transformation, which is referring to native (mirror) coordinates, implementation of drawing only clipped area will be the same for both cases (either we use swizzling and have full mirror, or we draw only visible area at some expense) - be it single or multiple mirrors
11:00:00
jackdaniel
well, mirror of a child sheet has different coordinates then its mirror (which is top-level-sheet's mirror)
11:00:56
jackdaniel
if you define it that way, then you are right. I disagree that it is a good definition (more a definition, which is made to support a particular claim)
11:01:58
beach
I think that the fact that the direct mirror of a mirrored sheet can have a non-identity transformation compared to the sheet itself is error prone and should be removed if possible.
11:03:34
jackdaniel
OK, if you put that this way I think I now understand you (whenever I agree with you is another question). I hope that you understand what I meant too (though I have doubts if I've managed to express that).