Resize aspect

Simon Lord slord at marelina.com
Sun Jun 13 15:09:26 EDT 2004


Thanks!  This is a great launch board to start from.



On Jun 13, 2004, at 2:52 AM, Brian Yennie wrote:

> Simon,
>
> How about something like this:
>
> 1) When you create a new stack, set a couple of properties of the 
> stack to remember what size it wants to be:
>
> set the actualHeight of this stack to (11*72)   ## 11 inches at 72DPI
> set the actualWidth of this stack to (17*72)    ## 17 inches at 72DPI
> set the zoomPercent of this stack to 100       ## start viewing at 100%
>
> 2) Ditto for objects- you want to remember what size they _want_ to be 
> as accurately as possible (if you just translate each time, 
> cumulatively, you'll probably notice them start to drift)
>
> ex:
>
> on newButton
>    set the actualHeight of the target to (the height of the target * 
> 100 / the zoomPercent of this stack)
>    set the actualWidth of the target to (the width of the target * 100 
> / the zoomPercent of this stack)
>    set the actualLeft of the target to (the left of the target * 100 / 
> the zoomPercent of this stack)
>    set the actualTop of the target to (the top of the target * 100 / 
> the zoomPercent of this stack)
> end newButton
>
> 3) Create a simple handler which resizes the stack itself and you can 
> call when needed:
>
> on zoomLayout toPercent
>    set the zoomPercent of this stack to toPercent
>    get the rect of this stack
>    put (item 2 of it +  round(the actualHeight of this stack * 
> toPercent / 100)) into item 4 of it
>    put (item 1 of it +  round(the actualWidth of this stack * 
> toPercent / 100)) into item 3 of it
>    set the rect of this stack to it
> end zoomLayout
>
> 4) Catch the resizeStack handler to fix your objects:
>
> on resizeStack newWidth, newHeight, oldWidth, oldHeight
>    repeat with i=1 to (number of cd parts)
>       put the actualLeft of cd part i * (the zoomPercent of this stack 
> / 100) into newLeft
>       put the actualTop of cd part i * (the zoomPercent of this stack 
> / 100) into newTop
>       put the actualHeight of cd part i * (the zoomPercent of this 
> stack / 100) into newHeight
>       put the actualWidth of cd part i * (the zoomPercent of this 
> stack / 100) into newWidth
>       set the rect of cd part i to 
> (round(newLeft)&comma&round(newTop)&comma&round(newLeft + 
> newWidth)&comma&round(newTop + newHeight))
>    end repeat
> end resizeStack
>
>
> All of this (with some work I'm sure, this is off the top of my head) 
> should buy you fairly reasonable resizing, although you probably won't 
> achieve ultra-accurate layout by nature of the beast- Rev isn't vector 
> graphics nor able to store higher zoomable resolutions for you to 
> maintain in the background when someone is zoomed out. When the user 
> is working at 800x600 pixels, newly created objects are going to be 
> limited by the available pixels and when you zoom way back out, you 
> might get nudged slightly by rounding inconsistencies.
>
> If you need finer alignment, you might consider other tactics, such as 
> allowing objects to be aligned horizontally / vertically and carefully 
> honoring that when zooming, etc. But the above approach should give 
> reasonable results.
>
> You might also investigate the Rev geometry manager for inspiration...
>
> HTH
>
>
>
>> Hi all, I want to throw out the following question to see if anyone 
>> has a stack already done that can do the following...
>>
>> My stack allows users to create a layout using template objects that 
>> fit the printed page.  However, some users don't have monitor that 
>> can display the full resolution, and 11 x 17 layouts are near 
>> impossible for most.
>>
>> So I'm looking to make a stack that can resize all objects on a card 
>> *proportionally* to fit the new stack size (for example, a user wants 
>> to scale the stack down to 77% because that's all that fits on his 
>> viewable screen space).  But it will always be an aspect ratio 
>> proportionate to the layout they are working on.  That way when it 
>> comes time to print (or preview a print) I can scale everything to 
>> 100%.
>>
>> Or is there another way?
>>
>> Sincerely,
>> Simon
>>
>> _______________________________________________
>> metacard mailing list
>> metacard at lists.runrev.com
>> http://lists.runrev.com/mailman/listinfo/metacard
>>
>>
>
> _______________________________________________
> metacard mailing list
> metacard at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/metacard
>
>
Sincerely,
Simon



More information about the metacard mailing list