freenode/#clim - IRC Chatlog
Search
4:26:28
beach
I have given the new computer back to the supplier for tests, and I am using the old one that hasn't crashed for a few days now. Now, because both of them crash in similar ways, I have bought a power conditioner, suspecting power spikes.
4:53:19
jackdaniel
I didn't mean that I think you are the cause, I've asked you because I know you were working on that parts lately
4:54:04
loke
One of them update sheet-native-transform, and the other applies some different transformation
4:54:53
loke
Scollable panes move the underlying X window object, while an application pane just changes transformation
4:56:13
jackdaniel
well, scrollable panes are in fact: scroller + viewport + pane (same for application pane which is scrollable)
4:57:24
loke
jackdaniel: I don't know the correct terminology. I keep getting it wrong and you keep having to correct me,
5:06:35
loke
What I'm saying is that if I open the coordinate swizzle test and scroll down a bit, and then set a brakpoint inside the MEDIUM-DRAW-TEXT implementation for CLX, then the line that is drawn on top of the pane is actually getting a Y coordinate of some positive value. Like, I scroll down 100 pixels, and the top lone is drawn at coordinate 100.
5:07:43
loke
If I draw a bunch of lines in a plain application pane, and scroll down 100 lines and set the same brakpoint, what is see is that the text is draw on coordinate 100 BUT with a translation transform of -100
5:09:16
loke
I'm not sure what the difference between these two methods are called. I called is "mirrored sheet" but apparently that is wrong. Beach told me what it was called, and he said that he didn't like the former method, because it requires the use of coordinate swizzling.
5:10:18
jackdaniel
the difference comes from the fact, that if we draw directly on a pane inside the viewport, its native transformation may happen to transform 0,0 to negative values
5:10:42
jackdaniel
medium-context and design-context have some code to mitigate that (I think where the problem lies)
5:11:20
jackdaniel
if pane on which drawing is performed is wrapped in a border pane (or something else) - default for application panes, then you scroll border pane and it has native transformation changed
5:11:46
jackdaniel
but this border pane's child (application pane) has native transformation intact at 0,0 (relative to border pane, and both are mirrors)
9:39:35
jackdaniel
btw, I'd love to be able to invoke output-to-output-record on nil instead of a stream. that way I'd be able to examine things easier
9:41:41
jackdaniel
I'd want to have output record with :stream bound to NIL which has all operations recorded
9:42:37
jackdaniel
output-to-output-record does exactly that (but it fakes drawing on a stream, then removes taht output-record from said stream)
9:48:47
frgo
Wikipedia says "Main development was between 1988 and 1993. CLIM 2.0 was released in 1993."
9:50:30
beach
jackdaniel: If you don't have a medium, how would you know the size of the output record? Things like arrow styles will alter the output record size.
9:51:40
frgo
Yeah - makes for even a better statement: "This device GUI is based on technology invented 30 years ago" - hehe.
9:52:03
jackdaniel
beach: we do not scrap drawing from X plane, each element drawn creates its own output record of certain size. if it doesn't assess properly size of its output record, then we don't have the right size
9:53:15
jackdaniel
I can imagine backend, which returns such information, but that's not how McCLIM works (and I think that taken approach is very sane, because according to specification, drawing on medium is just some approximation of sheet contents)
9:54:28
jackdaniel
and I have even idea how to make such thing to work ("offline" recording), but that would require some non-trivial work with class hierarchy and medium-draw-* specializations
9:57:49
beach
But I often find myself trying to navigate an output-record hierarchy using the inspect. It is not easy.
9:58:58
beach
It is easy to forget that sometimes writing a new tool is the best way to go when there is a problem to debug.
10:09:39
scymtym
definitely. clim is pretty good for this kind of thing. i have also heard good things about http://pharo.org/web for similar tasks
10:14:31
beach
I can only speak for CLIM, but I totally agree. The CLIM model fits perfectly with this kind of application.
10:17:17
frgo
Pharo looks nice. I do like their approach for attracting people: The MOOC: http://mooc.pharo.org/ - cool.
10:18:31
jackdaniel
frgo: my strategy for attracting people is sitting here and trying to look cool ;-)
10:19:57
jackdaniel
btw, given first copyrights in clim-tos are 88, we can assume that this is 30th anniversary; we could write about it on the blog
11:28:31
jackdaniel
do I understand correctly, that this definition is bogus (i.e transformations should be composed in opposite order)?
11:56:11
jackdaniel
probably somebody just coded it for specification coverage without much thought (and nobody used it)
12:00:32
jackdaniel
and that kind-of solves one of bugs I've found with transformations vs patterns (not really related to pattern)
12:27:14
scymtym
btw, this is the visualization i mentioned earlier: https://techfak.de/~jmoringe/parser-debug.ogv
13:19:28
loke
For example, when a draw-text-output-record is created, it asks the medium what the precise measurement is
13:26:57
loke
Basically, when the output record is created, it calls TEXT-BOUNDING-RECTANGLE* on the medium to determine the dimensions of the output record. Each backend has its own implementation of this.