Do you have  more screenshots of Hyperion?

Alexandre
-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



On Nov 28, 2013, at 7:49 AM, kilon alios <kilon.al...@gmail.com> wrote:

> Ok I have verified and indeed its not an Athens problem. My bad. The position 
> of the morph is reported at 5@30 and the not the correct 0@0. So it looks 
> like Morphic for some strange reason it offsets it. 
> 
> I knew about translateBy but I did not know about restoreAfter. so thank you. 
> 
> I prefer my version of the code because it makes clearer what I am trying to 
> do. However ideally because I am drawing a box inside another box the best 
> way would be to follow your approach and scale the second box using one shape 
> instead of two I am currently doing. But thats the price I am paying from not 
> knowing exactly how to do this. 
> 
> Also trying to painstakingly find the correct transform and scale values 
> requires A LOT of testing . This is why I find a vector editor for Athens and 
> Pharo absolutely essential. No coding can beat designing via mouse. 
> 
> On the other hand I could use Inkscape and import the svg to Athens , which 
> what I am about to research. Designing all GUI elements by code is a very bad 
> idea, but no less a learning experience. 
> 
> I will most probably move to Roassal too. 
> 
> As always thanks for the help.   
> 
> 
> On Thu, Nov 28, 2013 at 12:29 PM, Igor Stasenko <siguc...@gmail.com> wrote:
> well, by default the athens canvas coordinate system matches morphic one..
> but you know, it always hard to be sure, especially if you perform any local 
> coordinate transformations before that morph has any chance to draw itself..
> 
> You can figure this out easily: draw something at 0@0 and see where it is.
> then draw something at morph's x@y position and see it too.
> 
> btw, you know you don't have to create same paths over and over.
> you can easily put static parts out of regularly (and costly) evaluated code:
> 
> shape := canvas cacheAt: self "morph" ifAbsentPut: [
>                 aCanvas createPath: [:path | 
>               path relative.
> " no move-to here ***  path moveTo: ((self position x )+5)@(self position y);"
>               lineTo: 20@0;
>               cwArcTo: 5@5 angle: 45;
>               lineTo: 0@20;
>               cwArcTo: (-5)@5 angle: 45;
>               lineTo: (-20)@0;
>               cwArcTo: (-5)@(-5) angle: 45;
>               lineTo: 0@(-20);
>               cwArcTo: 5@(-5) angle: 45.
>                 ].
> ].
> 
> "and here we're using coordinate transform to translate origin point to 
> given position, so it will be the starting point (0@0) of our shape"
> 
> canvas pathTransform restoreAfter: [
>    canvas pathTransform translateBy:((self position x )+5)@(self position y).
>    canvas drawShape: shape.
> ]
> 
> by analogy you can cache all static pieces, just do something:
> 
> shapes := canvas cacheAt: self ifAbsentPut: [ self constructStaticShapesOn: 
> aCanvas ]
> 
> where #constructStaticShapesOn: must answer an array of them.
> 
> 
> On 28 November 2013 11:12, kilon alios <kilon.al...@gmail.com> wrote:
> wow you guys are fast at replying :)
> 
> I did 
> 
> 
>       self changeProportionalLayout.
>       editButton := HypEditButton new .
>       editButton position: 0@0.
>       self addMorph: editButton fullFrame: #(0 0 0 0 0 0 100 100).
> 
> I am afraid Igor I still see no change with your code.
> 
> I like to note here, that when I first created the editButton as morph , it 
> indeed placed it in correct place. A 0@0 placed it in top left corner as 
> expected. But I did overide its DrawOn:  with an empty method and used my own 
> method to render it with Athens. So it looks like the problem is Athens 
> related and not Morphic related or maybe a disagreement between Morphic and 
> Athens. 
> 
> just for the record here is the code I use to render the HypEditButton morph
> 
> render:aCanvas
>       |shape1 shape2 shape3 editButtonColor | 
> shape1 := aCanvas createPath: [:path | 
>               path relative .
>               
>               path moveTo: ((self position x )+5)@(self position y);
>               lineTo: 20@0;
>               cwArcTo: 5@5 angle: 45;
>               lineTo: 0@20;
>               cwArcTo: (-5)@5 angle: 45;
>               lineTo: (-20)@0;
>               cwArcTo: (-5)@(-5) angle: 45;
>               lineTo: 0@(-20);
>               cwArcTo: 5@(-5) angle: 45.
>                 ].
>       
>       shape2 := aCanvas createPath: [:path | 
>               path relative .
>               
>               path moveTo: ((self position x +7))@((self position y +3));
>               lineTo: 18@0;
>               cwArcTo: 2@2 angle: 45;
>               lineTo: 0@20;
>               cwArcTo: (-2)@2 angle: 45;
>          lineTo: (-20)@0;
>               cwArcTo: (-2)@(-2) angle: 45;
>               lineTo: 0@(-20);
>               cwArcTo: 4@(-2) angle: 45.
>                 ].
>       shape3 := aCanvas createPath: [:path | 
>               path relative .
>               
>               path moveTo: ((self position x +15))@((self position y +10));
>               
>               cwArcTo: 5@5 angle: 90;
>               cwArcTo: (-5)@5 angle: 90;
>               cwArcTo: (-5)@(-5) angle: 90;
>               cwArcTo: 5@(-5) angle: 90. 
>               
>               
>                 ].
>       
> ( editMode = true) ifTrue: [ editButtonColor := Color green] ifFalse: [ 
> editButtonColor := Color red ].
> (aCanvas setStrokePaint: editButtonColor) width: 1.
>     
> aCanvas drawShape: shape1 .
> aCanvas drawShape: shape2.
> aCanvas setPaint: (editButtonColor alpha: 0.3 ).
> aCanvas drawShape: shape3.
> 
> 
> 
>       
> 
> 
> On Thu, Nov 28, 2013 at 12:03 PM, Igor Stasenko <siguc...@gmail.com> wrote:
> 
> 
> 
> On 28 November 2013 10:59, kilon alios <kilon.al...@gmail.com> wrote:
> just tried it, I see no change
> 
> try:
>  self changeProportionalLayout
> 
> editButton := HypEditButton new .
>       self addMorph: editButton fullFrame: #(0 0 0 0 0 0 100 100).
> 
> 
> On Thu, Nov 28, 2013 at 11:54 AM, Benjamin 
> <benjamin.vanryseghem.ph...@gmail.com> wrote:
> Can you try to do something like
> 
> self changeProportionalLayout
> before adding the morph ?
> 
> Ben
> 
> On 28 Nov 2013, at 10:51, kilon alios <kilon.al...@gmail.com> wrote:
> 
>> So I have found some strange problems with my vector editor , Hyperion. 
>> 
>> Hyperion is a Morph openInWindow. Code can be found in the class side of 
>> Hyperion>>open.
>> 
>>  The coordinate system when detecting events (mouseOver, mouseUp and 
>> mouseDown events of the Hyperion instance) looks like it takes to account 
>> also beyond the morph as coordinates as a result events happening at the top 
>> right edge of the morph where Hyperion is rendered is 6@30( which is the 
>> size of the window's title bar plus its borders). Thats ok, I have taken 
>> these offsets to account when computing the position of the mouse. I guess 
>> it uses the global coordinated and not the local coordinates of the morph. 
>> 
>> I am adding a button to control the edit mode of a line, when in edit mode 
>> handles for line's control points are shown and those handles can be dragged 
>> around to control the shape of the line , when off edit mode, the line will 
>> be able to be drag around (not implemented yet). 
>> 
>> My problem is that when I add that button as morph to the existing morph of 
>> Hyperion in 0@0 , it actually appears in 0@30 in local coordinated of the 
>> Hyperion moprh which in global coordinates it 6@60 ( 0@0 + 6@30 + 0@30 = 
>> 6@60). Why is that ?
>> 
>> I have no clue why I am getting an offset of 0@30 in local coordinates of 
>> the Hyperion morph.
>> 
>> here is the picture showing a) how it looks like b) the code that set the 
>> position c) transcript showing mouse coordinates when clicked in the top 
>> left corner of Hyperion morph
>>  Hyperion coordinates problem.JPG
>>  
>> if anyone wants to try the code himself the repo is here
>> 
>> http://www.smalltalkhub.com/#!/~kilon/Hyperion
>> 
>> To sum up, to place that button on top left, I will have to position it 
>> 0@(-30) which for me makes no sense at all. 
>> 
>> Please note that everything is rendered with Athens.
>> 
>> Maybe I have messed up the code myself somewhere but I have looked it again 
>> and again I cant find a problem with my code.
> 
> 
> 
> 
> 
> -- 
> Best regards,
> Igor Stasenko.
> 
> 
> 
> 
> -- 
> Best regards,
> Igor Stasenko.
> 


Reply via email to