Stupid Question Again - Proportional Scaling

classic Classic list List threaded Threaded
22 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
I know it's possible and I know it's simple really, but I can't remember it/figure it out!

I have a sub-stack that contains an image.  I want the user to be able to drag the corners and edges of the sub-stack window to make the window and its image larger or smaller, but the window and image must maintain their original aspect ratio – no stretching, no empty borders etc.  I've tried the following in the card script:

global gImageRatio

on resizeStack pNewWidth, pNewHeight, pOldWidth, pOldHeight
   propSizeImage "coinSet", gImageRatio
   pass resizeStack
end resizeStack

on propSizeImage pImageName, @pImageRatio
   put the width of this stack into propWidth
   set the width of image pImageName to propWidth
   put propWidth div pImageRatio into propHeight
   put the width of image pImageName into tWidth
   put the height of image pImageName into tHeight
   if propHeight > tHeight then
      put tHeight into propH
      put tHeight * pImageRatio into propW
   else if propHeight < tHeight then
      put propHeight into propH
      put propH * pImageRatio into propW
   else
      put tWidth into propW
      put tHeight into propH
   end if
   set the height of image pImageName to propH
   set the width of image pImageName to propW
   set the height of this stack to propH
   set the width of this stack to propW
   set the topLeft of image pImageName to 0,0
end propSizeImage

with the following initialisation in the stack script:

global gImageRatio

on preOpenStack
   put the width of image "CoinSet" / the height of image "CoinSet" into gImageRatio
end preOpenStack

I'm probably missing something obvious, but can anyone help please?!

Thanks

Peter
--
Peter Reid
Loughborough, UK



_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
On 3/17/18 12:14 PM, Peter Reid via use-livecode wrote:
> I have a sub-stack that contains an image.  I want the user to be able
> to drag the corners and edges of the sub-stack window to make the window
> and its image larger or smaller, but the window and image must maintain
> their original aspect ratio – no stretching, no empty borders etc.


I wish we had a way to determine when a stack resize is finished. The
best I could do is run a "send" loop to check the mouse state. Maybe
someone else knows a better way. It doesn't seem possible to change the
stack size within a resizeStack handler, which makes sense, so the
adjustment has to be done afterward.

I think this sort of does what you want, but there's a "snap" at the end
when the stack adjusts to the new image size. It accomodates images of
any orientation.


constant kImgName = "coinSet"

on resizeStack pNewWidth, pNewHeight, pOldWidth, pOldHeight
   put the formattedWidth of img kImgName into tFWidth
   put the formattedHeight of img kImgName into tFHeight
   if tFHeight > tFWidth then
     resizeToHeight tFHeight,tFWidth
   else
     resizeToWidth tFHeight,tFWidth
   end if
   checkResizeDone
end resizeStack

on resizeToHeight tOrigImgHeight,tOrigImgWidth
   put the height of this cd/tOrigImgHeight  into tRatio
   put (tOrigImgWidth * tRatio) into tNewWidth
   put (tOrigImgHeight * tRatio) into tNewHeight
   set the rect of img kImgName to 0,0,tNewWidth,tNewHeight
end resizeToHeight

on resizeToWidth tOrigImgHeight,tOrigImgWidth
   put the width of this cd into tW
   put tW/tOrigImgWidth into tRatio
   put (tOrigImgWidth * tRatio) into tNewWidth
   put (tOrigImgHeight * tRatio) into tNewHeight
   set the rect of img kImgName to 0,0,tNewWidth,tNewHeight
end resizeToWidth

on checkResizeDone
   if the mouse is up then
     set the rect of this stack to \
       (globalLoc(the topleft of img kImgName) &comma& globalLoc(the
bottomright of img kImgName))
   else
     send "checkResizeDone" to me in 100 milliseconds
   end if
end checkResizeDone

--
Jacqueline Landman Gay         |     [hidden email]
HyperActive Software           |     http://www.hyperactivesw.com


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
For proportional resizing a stack window
hold the shiftkey down when resizing.

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
[Sorry lost above half of my answer.]

You could try the following with user's interaction:

For proportional resizing a stack window
hold the shiftkey down when resizing.

And in card's script add

on resizestack w,h
  set rect of img 1 to (0,0,w,h)
end resizestack

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
On 3/18/18 1:26 AM, hh via use-livecode wrote:

> [Sorry lost above half of my answer.]
>
> You could try the following with user's interaction:
>
> For proportional resizing a stack window
> hold the shiftkey down when resizing.
>
> And in card's script add
>
> on resizestack w,h
>    set rect of img 1 to (0,0,w,h)
> end resizestack

If Peter doesn't mind instructing his users to use the shift key, this
would be a good solution.

--
Jacqueline Landman Gay         |     [hidden email]
HyperActive Software           |     http://www.hyperactivesw.com

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
Hi Jacqueline & hh

Thanks for the feedback. After I sent my query I came across a relevant response in the forum:

https://forums.livecode.com/viewtopic.php?t=30385

In particular MaxV's response which is very similar to yours Jacqueline. When I tried this I too realised that I'd need a "send" to tidy-up afterwards!

Here's my complete code (all in the stack script):

local tAdjustingStack

on resizeStack
   if not tAdjustingStack then
      put the top of image "myImage" into tTop
      put the left of image "myImage" into tLeft
      put the realSize of image "MyImage" into tSize
      put the startsizeStack of image "myImage" into tSS
      set the width of image "myImage" to (item 1 of tSize * the width of this stack / item 1 of tSS )
      set the height of image "myImage" to (item 2 of tSize * the height of this stack / item 2 of tSS )
      if the width of image "myImage" > the height of image "myImage" then
         set the width of image "myImage" to (item 1 of tSize / item 2 of tSize * the height of image "myImage")
      else
         set the height of image "myImage" to (item 2 of tSize / item 1 of tSize * the width of image "myImage")
      end if
      set the top of image "myImage" to tTop
      set the left of image "myImage" to tLeft
   end if
   pass resizeStack
end resizeStack

on tidyUpAfterwards
   put the topLeft of this stack into tTL
   if the width of this stack <> the width of image "myImage" then
      lock screen
      put true into tAdjustingStack
      set the width of this stack to the width of image "myImage"
      set the topLeft of this stack to tTL
   end if
   if the height of this stack <> the height of image "myImage" then
      lock screen
      put true into tAdjustingStack
      set the height of this stack to the height of image "myImage"
      set the topLeft of this stack to tTL
   end if
   unlock screen
   put false into tAdjustingStack
   send "tidyUpAfterwards" to me in 5 ticks
end tidyUpAfterwards

on preOpenStack
   put false into tAdjustingStack
   set the realsize of image "myImage" to (the width of image "myImage", the height of image "myImage")
   set the startSizeStack of image "myImage" to (the width of this stack, the height of this stack)
   send "tidyUpAfterwards" to me in 5 ticks
end preOpenStack

It's a pity that this proved a bit more convoluted than perhaps it should have been.

Thanks again.

Peter
--
Peter Reid
71 Leconfield Road, Loughborough, Leics. LE11 3SP, UK
Tel: +44 (0)1509 268843
Mobile/Cell: 07778 632533
Email: [hidden email]

> Message: 1
> Date: Sat, 17 Mar 2018 17:14:36 +0000
> From: Peter Reid <[hidden email]>
> To: [hidden email]
> Subject: Stupid Question Again - Proportional Scaling
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=utf-8
>
> I know it's possible and I know it's simple really, but I can't remember it/figure it out!
>
> I have a sub-stack that contains an image.  I want the user to be able to drag the corners and edges of the sub-stack window to make the window and its image larger or smaller, but the window and image must maintain their original aspect ratio ? no stretching, no empty borders etc.  I've tried the following in the card script:
>
> global gImageRatio
>
> on resizeStack pNewWidth, pNewHeight, pOldWidth, pOldHeight
>   propSizeImage "coinSet", gImageRatio
>   pass resizeStack
> end resizeStack
>
> on propSizeImage pImageName, @pImageRatio
>   put the width of this stack into propWidth
>   set the width of image pImageName to propWidth
>   put propWidth div pImageRatio into propHeight
>   put the width of image pImageName into tWidth
>   put the height of image pImageName into tHeight
>   if propHeight > tHeight then
>      put tHeight into propH
>      put tHeight * pImageRatio into propW
>   else if propHeight < tHeight then
>      put propHeight into propH
>      put propH * pImageRatio into propW
>   else
>      put tWidth into propW
>      put tHeight into propH
>   end if
>   set the height of image pImageName to propH
>   set the width of image pImageName to propW
>   set the height of this stack to propH
>   set the width of this stack to propW
>   set the topLeft of image pImageName to 0,0
> end propSizeImage
>
> with the following initialisation in the stack script:
>
> global gImageRatio
>
> on preOpenStack
>   put the width of image "CoinSet" / the height of image "CoinSet" into gImageRatio
> end preOpenStack
>
> I'm probably missing something obvious, but can anyone help please?!
>
> Thanks
>
> Peter
> --
> Peter Reid
> Loughborough, UK
>
> ------------------------------
>
> Message: 10
> Date: Sun, 18 Mar 2018 01:04:19 -0500
> From: "J. Landman Gay" <[hidden email]>
> To: How to use LiveCode <[hidden email]>
> Subject: Re: Stupid Question Again - Proportional Scaling
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> On 3/17/18 12:14 PM, Peter Reid via use-livecode wrote:
>> I have a sub-stack that contains an image.  I want the user to be able
>> to drag the corners and edges of the sub-stack window to make the window
>> and its image larger or smaller, but the window and image must maintain
>> their original aspect ratio ? no stretching, no empty borders etc.
>
>
> I wish we had a way to determine when a stack resize is finished. The
> best I could do is run a "send" loop to check the mouse state. Maybe
> someone else knows a better way. It doesn't seem possible to change the
> stack size within a resizeStack handler, which makes sense, so the
> adjustment has to be done afterward.
>
> I think this sort of does what you want, but there's a "snap" at the end
> when the stack adjusts to the new image size. It accomodates images of
> any orientation.
>
>
> constant kImgName = "coinSet"
>
> on resizeStack pNewWidth, pNewHeight, pOldWidth, pOldHeight
>   put the formattedWidth of img kImgName into tFWidth
>   put the formattedHeight of img kImgName into tFHeight
>   if tFHeight > tFWidth then
>     resizeToHeight tFHeight,tFWidth
>   else
>     resizeToWidth tFHeight,tFWidth
>   end if
>   checkResizeDone
> end resizeStack
>
> on resizeToHeight tOrigImgHeight,tOrigImgWidth
>   put the height of this cd/tOrigImgHeight  into tRatio
>   put (tOrigImgWidth * tRatio) into tNewWidth
>   put (tOrigImgHeight * tRatio) into tNewHeight
>   set the rect of img kImgName to 0,0,tNewWidth,tNewHeight
> end resizeToHeight
>
> on resizeToWidth tOrigImgHeight,tOrigImgWidth
>   put the width of this cd into tW
>   put tW/tOrigImgWidth into tRatio
>   put (tOrigImgWidth * tRatio) into tNewWidth
>   put (tOrigImgHeight * tRatio) into tNewHeight
>   set the rect of img kImgName to 0,0,tNewWidth,tNewHeight
> end resizeToWidth
>
> on checkResizeDone
>   if the mouse is up then
>     set the rect of this stack to \
>       (globalLoc(the topleft of img kImgName) &comma& globalLoc(the
> bottomright of img kImgName))
>   else
>     send "checkResizeDone" to me in 100 milliseconds
>   end if
> end checkResizeDone
>
> --
> Jacqueline Landman Gay         |     [hidden email]
> HyperActive Software           |     http://www.hyperactivesw.com
>
> ------------------------------
>
> Message: 11
> Date: Sun, 18 Mar 2018 07:13:55 +0100
> From: hh <[hidden email]>
> To: [hidden email]
> Subject: Re: Stupid Question Again - Proportional Scaling
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=us-ascii
>
> For proportional resizing a stack window
> hold the shiftkey down when resizing.
>
> ------------------------------
>
> Message: 12
> Date: Sun, 18 Mar 2018 07:26:05 +0100
> From: hh <[hidden email]>
> To: [hidden email]
> Subject: Re: Stupid Question Again - Proportional Scaling
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=us-ascii
>
> [Sorry lost above half of my answer.]
>
> You could try the following with user's interaction:
>
> For proportional resizing a stack window
> hold the shiftkey down when resizing.
>
> And in card's script add
>
> on resizestack w,h
>  set rect of img 1 to (0,0,w,h)
> end resizestack
>
> ------------------------------
>
> Message: 13
> Date: Sun, 18 Mar 2018 02:11:10 -0500
> From: "J. Landman Gay" <[hidden email]>
> To: How to use LiveCode <[hidden email]>
> Subject: Re: Stupid Question Again - Proportional Scaling
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> On 3/18/18 1:26 AM, hh via use-livecode wrote:
>> [Sorry lost above half of my answer.]
>>
>> You could try the following with user's interaction:
>>
>> For proportional resizing a stack window
>> hold the shiftkey down when resizing.
>>
>> And in card's script add
>>
>> on resizestack w,h
>>   set rect of img 1 to (0,0,w,h)
>> end resizestack
>
> If Peter doesn't mind instructing his users to use the shift key, this
> would be a good solution.
>
> --
> Jacqueline Landman Gay         |     [hidden email]
> HyperActive Software           |     http://www.hyperactivesw.com


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
Peter Reid wrote:

 >> I have a sub-stack that contains an image.  I want the user to be
 >> able to drag the corners and edges of the sub-stack window to make
 >> the window and its image larger or smaller, but the window and
 >> image must maintain their original aspect ratio ? no stretching,
 >> no empty borders etc.
...
 > It's a pity that this proved a bit more convoluted than perhaps it
 > should have been.

How often do we see apps that constrain window resizing?

There are probably a few, and now one more.  But it's not common, and
apparently what few OS APIs may be provided for such hooks aren't easy
to access or at least often used, or we might see more of it.

LC tends to provide easy access to common UI objects and behaviors that
the OSes make easy to use.  When we pursue and edge case is where things
get tricky.

If your solution is working well for what you need then it's probably
not worth revisiting the design.  But one thing I've learned from my
customers is that they sometimes resize windows for reasons I didn't
anticipate.

As designers, we tend to think of resizing a window as something we do
to view the window's content.  In that use case, if the content is
square there's certainly no harm, and perhaps some benefit, in
constraining the user's resize action to keep the window square as well.

But I've found sometimes users resize windows to remove visual clutter
from their desktop.  This can result in a window with empty space along
at least two edges if the content within it has no sensible way to make
full use of the window's content region.

Yet in some cases, I have to ask: why not let the user define their own
preferred rect for the window, and I'll do my job of making the interior
fit as usably and attractively as I can within whatever the user wants
to do.

Of course I have no idea what you're building, and there may be some
excellent reasons to constrain the user's resize action.

But if maintaining the image within the window to maximally fit the
window's rect while maintaining its proportions is the goal, a suitably
neutral color filling the card would seem to suffice as at least as well
as whatever clutter may be behind the window outside of its bounds, no?

Certainly simpler to write. :)  When I find myself working hard against
the grain of what OSes suggest for common UI elements, sometimes it
helps me pause and reconsider *why* I'm doing that, to see if there's a
more with-the-grain approach the maintains consistency for the user
experience.

--
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  [hidden email]                http://www.FourthWorld.com

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
I think he wants to use window resizing as an automatic zoom, like a
magnifying glass. Google Maps does this with + and - buttons but doesn't
resize the window content to fit.
--
Jacqueline Landman Gay | [hidden email]
HyperActive Software | http://www.hyperactivesw.com
On March 18, 2018 11:58:55 AM Richard Gaskin via use-livecode
<[hidden email]> wrote:

But if maintaining the image within the window to maximally fit the
window's rect while maintaining its proportions is the goal, a suitably
neutral color filling the card would seem to suffice as at least as well
as whatever clutter may be behind the window outside of its bounds, no?



_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
Exactly.  The contents of the window can respond to the resizeStack
message to be maximized within the window's content region without
necessarily constraining the resize of the window's shape itself.

--
  Richard Gaskin
  Fourth World Systems

J. Landman Gay wrote:
 > I think he wants to use window resizing as an automatic zoom, like
 > a magnifying glass. Google Maps does this with + and - buttons but
 > doesn't resize the window content to fit.
 > --
 > Jacqueline Landman Gay | jacque at hyperactivesw.com
 > HyperActive Software | http://www.hyperactivesw.com
 >
 > On March 18, 2018 11:58:55 AM Richard Gaskin via use-livecode wrote:
 >
 > But if maintaining the image within the window to maximally fit
 > the window's rect while maintaining its proportions is the goal,
 > a suitably neutral color fil



_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
@Peter
You could try the following (doesn't need a shiftkey down).
Put the following into the stack's script and drag anywhere the
image to resize it and the stack proportionally (topLeft fixed).

-- 1. Don't use any resize stack handler
-- 2. set resizable of the stack to FALSE

local l0, t0, ew, eh

on mouseDown
  put the long id of the target into tgt
  if not tgt begins with "image " then exit mouseDown
  put the left of this stack into l0
  put the top of this stack into t0
  put the formattedWidth of tgt into ew
  put the formattedHeight of tgt into eh
  put the right of tgt - the clickH into dx
  setRects dx,tgt
end mouseDown

on setRects dx,tgt
  lock screen; lock messages
  put dx+the mouseH into w0; put eh/ew * w0 into h0
  set the rect of this stack to (l0,t0,l0+w0,t0+h0)
  set the rect of tgt to (0,0,w0,h0)
  if the mouse is down --> TMHO, polling the mouse is here OK
  then send "setRects dx,tgt" to me in 8 millisecs --> 8-16 millisecs



end setRects


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
On 3/18/18 12:41 PM, Richard Gaskin via use-livecode wrote:
> Exactly.  The contents of the window can respond to the resizeStack
> message to be maximized within the window's content region without
> necessarily constraining the resize of the window's shape itself.
>

Sure, but aesthetically it's ugly.

--
Jacqueline Landman Gay         |     [hidden email]
HyperActive Software           |     http://www.hyperactivesw.com


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
Very nice. :)

On 3/18/18 1:29 PM, hh via use-livecode wrote:

> @Peter
> You could try the following (doesn't need a shiftkey down).
> Put the following into the stack's script and drag anywhere the
> image to resize it and the stack proportionally (topLeft fixed).
>
> -- 1. Don't use any resize stack handler
> -- 2. set resizable of the stack to FALSE
>
> local l0, t0, ew, eh
>
> on mouseDown
>    put the long id of the target into tgt
>    if not tgt begins with "image " then exit mouseDown
>    put the left of this stack into l0
>    put the top of this stack into t0
>    put the formattedWidth of tgt into ew
>    put the formattedHeight of tgt into eh
>    put the right of tgt - the clickH into dx
>    setRects dx,tgt
> end mouseDown
>
> on setRects dx,tgt
>    lock screen; lock messages
>    put dx+the mouseH into w0; put eh/ew * w0 into h0
>    set the rect of this stack to (l0,t0,l0+w0,t0+h0)
>    set the rect of tgt to (0,0,w0,h0)
>    if the mouse is down --> TMHO, polling the mouse is here OK
>    then send "setRects dx,tgt" to me in 8 millisecs --> 8-16 millisecs
>
>
>
> end setRects


--
Jacqueline Landman Gay         |     [hidden email]
HyperActive Software           |     http://www.hyperactivesw.com

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
Never tried to script that. It's *eventually* simple -- as always with LC.
Here again a little bit optimised, changing the size also by the scrollWheel:

-- 1. Don't use a resizestack handler
-- 2. Set resizable of the stack to FALSE

local l0, t0, ff

on mouseDown
 put the long id of the target into tgt
 if not tgt begins with "image " then exit mouseDown
 put the left of this stack into l0
 put the top of this stack into t0
 -- if the image is always the same then ff can be computed once
 put the formattedHeight of tgt/the formattedWidth of tgt into ff
 put the right of tgt - the clickH into dx
 setRects dx,tgt
end mouseDown

on setRects dx,tgt
 if setRects is in the pendingmessages then exit setRects
 lock screen; lock messages
 put dx+the mouseH into w0
 put ff*w0 into h0
 set the rect of this stack to (l0,t0,l0+w0,t0+h0)
 set the rect of tgt to (0,0,w0,h0)
 if the mouse is down --> TMHO, polling the mouse is here OK
 then send "setRects dx,tgt" to me in 8 millisecs --> 8-16 millisecs
end setRects

on rawkeydown k
 put the long id of the target into tgt
 if not tgt begins with "image " then pass rawkeydown
 lock screen; lock messages
 put the left of this stack into l0
 put the top of this stack into t0
 switch k
   case 65308; put  16 into d; break -- scrollwheel backward
   case 65309; put -16 into d; break -- scrollwheel forward
 end switch
 put d+the width of tgt into w0
 -- if the image is always the same then this becomes: put w0*ff into h0
 put w0*the formattedHeight of tgt/the formattedWidth of tgt into h0
 set the rect of this stack to (l0,t0,l0+w0,t0+h0)
 set the rect of tgt to (0,0,w0,h0)
end rawkeydown

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
J. Landman Gay wrote:

 > On 3/18/18 12:41 PM, Richard Gaskin via use-livecode wrote:
 >> Exactly.  The contents of the window can respond to the resizeStack
 >> message to be maximized within the window's content region without
 >> necessarily constraining the resize of the window's shape itself.
 >>
 >
 > Sure, but aesthetically it's ugly.

That's a pretty sweeping dismissal of the countless apps that handle
this problem that way.

Some feel that many multi-window apps are ugly, in a world increasingly
migrating to less fidgety UIs that keep everything in one window
separated by panes (consider Premier vs iMovie).

Personally, I'm disinclined to consider any solution "ugly" until I've
seen the context of use.

With this challenge of displaying an image in a window, if the common
solution is truly ugly you've chosen the wrong neutral color. ;)

Otherwise it's simply a design decision, as attractive or unattractive
as you make it.

Inventing novel interaction models that break from user expectations is
not without some risk of its own.  I won't go so far as to say it's
necessarily ugly, but whenever I find myself considering a seldom-seen
against-the-grain solution I first look at how others solve this and
consider the necessity of inventing new ways of doing things as common
as resizing windows.

But in some rare cases, rare solutions may be the perfect fit.

HH's code is very nice - does the job well, resizing very smoothly on my
Ubuntu box.  If it's what's needed, by all means use it.

Without seeing the full app design, I have no opinion of whether any
proposed solution could be considered attractive or otherwise.  I'm just
providing options for consideration.

--
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  [hidden email]                http://www.FourthWorld.com

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Dinamyc variables.

Mike Kerner via use-livecode

Dear Livecode programmers,

I am trying to create a new variable with the name of a dynamically
generated card.
Please note that I would like to create a new variable, not to put the
name of the card inside the variable.

I would like to have something like this (PseudoCode)

"Get the name of this card and create a variable with the name of the card."

I searched the forum and the dictionary but I cannot find how to do that.

Best regards/ Saludos cordiales/ Cordialement

Heriberto Torrado
​Chief Technology Officer (CTO)
​Director de informática
Directeur informatique

*NetDreams S.C.*
http://www.networkdreams.net

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Dinamyc variables.

Mike Kerner via use-livecode
Can you use value(cdname) ? Haven’t tried it, tho.
Bill

William Prothero
http://es.earthednet.org

> On Mar 18, 2018, at 7:08 PM, Heriberto Torrado via use-livecode <[hidden email]> wrote:
>
>
> Dear Livecode programmers,
>
> I am trying to create a new variable with the name of a dynamically generated card.
> Please note that I would like to create a new variable, not to put the name of the card inside the variable.
>
> I would like to have something like this (PseudoCode)
>
> "Get the name of this card and create a variable with the name of the card."
>
> I searched the forum and the dictionary but I cannot find how to do that.
>
> Best regards/ Saludos cordiales/ Cordialement
>
> Heriberto Torrado
> ​Chief Technology Officer (CTO)
> ​Director de informática
> Directeur informatique
>
> *NetDreams S.C.*
> http://www.networkdreams.net
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Dinamyc variables.

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode


> On 19 Mar 2018, at 1:08 pm, Heriberto Torrado via use-livecode <[hidden email]> wrote:
> I am trying to create a new variable with the name of a dynamically generated card.
> Please note that I would like to create a new variable, not to put the name of the card inside the variable.

This seems a little strange. Are you sure you aren’t suffering from an X/Y problem here. Perhaps explain what it is you are wanting to do with the variable?

Cheers

Monte
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Dinamyc variables.

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
Hola Heriberto,

> Am 19.03.2018 um 03:08 schrieb Heriberto Torrado via use-livecode <[hidden email]>:
>
> Dear Livecode programmers,
>
> I am trying to create a new variable with the name of a dynamically generated card.
> Please note that I would like to create a new variable, not to put the name of the card inside the variable.
> I would like to have something like this (PseudoCode)
> "Get the name of this card and create a variable with the name of the card."
> I searched the forum and the dictionary but I cannot find how to do that.

this is a case for DO! :-)

...
put the short name of this cd into tCardName
do ("put empty into " & tCardName)
...
Et voila, an empty variable with the name of your card.

If you need to create MORE than one variable from strings, just create an array with the string(s) as keys.
...
put the short name of this cd into tCardName
put empty into tArray[tCardName]
...

> Best regards/ Saludos cordiales/ Cordialement
>
> Heriberto Torrado

Best

Klaus

--
Klaus Major
http://www.major-k.de
[hidden email]


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Dinamyc variables.

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
This is what Macro Substitution was created for, but LC doesn't have that function. Say you have an accounting app where you can load different companies. The names of the tables and support files on disk are serialized with a 2 digit number representing the company number. In Foxpro when you load a new company, you *could* reference the files using macro substitution:

open file &tCompanyPath&tModule&tCompanynum

Of course there are ways around this. Someone pointed out using an array, which is a variable containing other variables in essence.

> On Mar 18, 2018, at 19:08 , Heriberto Torrado via use-livecode <[hidden email]> wrote:
>
> [This message was identified as a phishing scam. Learn about phishing at http://aka.ms/LearnAboutPhishing]
>
> Dear Livecode programmers,
>
> I am trying to create a new variable with the name of a dynamically
> generated card.
> Please note that I would like to create a new variable, not to put the
> name of the card inside the variable.
>
> I would like to have something like this (PseudoCode)
>
> "Get the name of this card and create a variable with the name of the card."
>
> I searched the forum and the dictionary but I cannot find how to do that.
>
> Best regards/ Saludos cordiales/ Cordialement
>
> Heriberto Torrado
> ​Chief Technology Officer (CTO)
> ​Director de informática
> Directeur informatique
>
> *NetDreams S.C.*
> http://www.networkdreams.net
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Stupid Question Again - Proportional Scaling

Mike Kerner via use-livecode
In reply to this post by Mike Kerner via use-livecode
> On Mar 18, 2018, at 09:57 , Richard Gaskin via use-livecode <[hidden email]> wrote:
>
> How often do we see apps that constrain window resizing?

This is common I think for apps which have a set of fields displaying data, tables etc. Maybe there are some panes and tabs, but to reduce the window to less than x,y would require the contents to be scrollable. We have an app whose window settings get corrupted if Windows Display has a scale factor set over 100%. Another app will simply refuse to run if the resolution of the current monitor is below a minimum. A lot of times developers don't want to deal with window geometry. Their solution is to tell you, "Don't do that" when it comes to window sizing, or they don't allow you to do it at all.

Bob S




_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
12