oops...my bad- forgot the } at the end...
fixed
Sent: Saturday, February 23, 2008 8:29:34 PM
Subject: [UFBeta] Re: The Tiles Deluxe Transformation
Here- I uncompressed it and saved it as a text file...should make it easier, I hope
----- Original Message ----
From: Bill Smith <willi...@rogers.com>
To: UFB...@googlegroups.com
Sent: Saturday, February 23, 2008 3:12:44 PM
Subject: [UFBeta] Re: The Tiles Deluxe Transformation
KenAs did I, nothing but error mesages.To me what I thought was the formulalooked like a upr fileBill----- Original Message -----From: Tres AmieSent: Saturday, February 23, 2008 3:58 PMSubject: [UFBeta] Re: The Tiles Deluxe TransformationKen,I did as you said, but when I point to that file, I get a full list of error messages and the transform button for that formula shows a red exclamation point. Any suggestions?
Ron/Bill,
The formula is in Jussi's post. You'll have to copy and paste it into
a local file.
Ken...
Ron Barnett wrote:
> Hi Jussi,
>
> Tiling is an area that I have explored from time to time, especially
> using images. I am looking forward to seeing the formula. Like Bill,
> where do you have it stored?
>
> Ron Barnett
>
> On Sat, Feb 23, 2008 at 12:19 PM, Jussi > > wrote:
>
>
> Hi all,
> I've subscribed this group for a while already but haven't posted
> anything before. I have recently been working on a somewhat complex
> formula that should be tested carefully before I submit it to the
> formula database.
>
> The Tiles Deluxe transformation aims to help in creation and use of
> tiled images in UF. The formula has some boolean parameter modifiers
> and three different view modes resulting in about 10 different
> coordinate calculation steps. Although it seems to me be working
> correctly, I wanted to post it here because bugs can easily sneak in
> into all that mess. It was quite a pain to get it right (?) in the
> first place.
>
> As the formula has some nontrivial features for nontrivial uses, I
> also wrote a little tutorial explaining and illustrating its use. Also
> see the formula parameter documentation for details in how the
> parameters work.
>
> Please let me know if you find illogical behavior, bugs or errors in
> the formula or its parameter documentation.
>
> Regards,
> Jussi
>
> * Tiles Deluxe Quick Tutorial *
>
> Start with the default settings. View mode is One tile by default
> which means that only one tile is shown in the image. This mode is
> intended for searching nteresting patterns - you can use mouse with
> modifier keys in a WYSIWYG manner.
>
> After you've found something interesting, switch to the Tile grid mode
> to see how that interesting area tiles when repeated twice and
> mirrored (Number of tiles is 2 and Symmetric tiling is checked by
> default).
>
> I wanted the formula to behave nicely with my Poles transform (in
> jh.uxf) as well as with zooming/rotating/panning. If Use screen
> coordinates is checked, however, the tiled image changes when the
> location is changed.
>
> By default, the Use screen coordinates is checked. This means that the
> location parameters specified in the location tab define the area in
> the complex plane from where the tile contents are calculated. Uncheck
> the Use screen coordinates and copy the center, magnification and
> angle parameters from the location tab to recreate the earlier tiled
> image. Now the tiled image is independent of the location tab - if you
> zoom or rotate the image, the result is unchanged.
>
> Now add the Poles transform from jh.uxf and reset the location tab. If
> you now zoom/rotate/pan, the resulting image changes in unexpected
> ways. This is because The Tile Grid mode is selected and the tiles are
> calculated independent of the location tab, but the location of poles
> in the Poles transform changes as the location changes.
>
> To eliminate this effect, select the Fixed grid view mode. Now the
> tiles have fixed locations in the complex plane and zooming/rotating/
> panning doesn't change their location.
>
> Attached are an example upr that's been created with the above
> instructions and the Tiles Deluxe formula. Other formulas should
> already be available in the public database.
>
>
> tilesDeluxeTutorialSample {
> ::i6KbDjn2VSVTvRNMQ07r0+fwKXRbWbnvB5DQBEUpKqocvyE7srpJ2BbH6u87lfDcmx2plK6J
> uZPem5NzbeeGs8ePf8lb3gQelfUyy8qRp7tyxlTSkfxbsK+IyxnmHlZo7VC/
> RWNGjOKVHO6Z
> lwxR+Zp1xIhk0blCl3xyucx5UoP8L7d/
> WL1viunWsnixtZb3E9PC5k0f0IYTLje1M35Q98Zv
>
> yoZZvh3f3BrZRLyQmZevyfmRw4tbm4zzK9hY49StXaZ7w5tV4muuqym6948mCSDtFXirqRT8
> DaGJvlSJk2GEXfA6xdESFESsg9Wu2NYsTOGd7mHvFz/AQFa+EQKf7Y
> +yphMEAo9c46uZDQTZ
>
> o5b1LTXHOzKgLOzitXyw7xh4nvVIdelmH7JwIYRea2AEinRgLDKrzHiGKpccdVXHtlUuHOX2
> gpNldkUacyejWs6YMN+jKbyAeP5/pujj3di48NU+/QJv/KjA899qTSB6gVJySoaGGcS/
> adv4
> k3ceCGYQeOLdpG/Lhkxopn/Iw1yX7ml9em2kSRAtVTk1kAKEp+CjxKCEDE
> +T99i0EFnTJ4um
> KYYWUSxtVrPfFMNVDq+EhWk3BUEmU/EsSz3iqcaDpb7mAlsMyTiN+JVI5gMCaIpt/os/
> OG0k
> /DfNM9Ifdt0CZAqSxlLjK+KvMFoLyLE/MOZkiQ52SohqFkc0QxObuHQi
> +XZg2MFaXj9zchax
> BhUUVUVVU0hr6KoNPzvUnQB3qJdlh2Mm4B4/qJK5j4FtBsKoE42HZSQb+
> +kfJxyX5qRzCMCk
> AOKtTJkv8vafZIQtc7Gwln/k77WPyZGVCWJttuhSLap/
> Dj1PGZmVS7mJjxf8jAVHHTXAfi9Z
>
> PQbpHfaNljf3a33bGN2PtK6g7cY7z1RiMJ4WJ1tbOYBSEQLtEwAqSdYlzNqwSKQBzP765pTR
> /yzQuIuxEZN+k+ZXTEYlWIPxI1oI
> +whmmGKpa1O406D4HsUTfwVaXNB2sAUXaFVsgWhSbW9H
> /4CMaV12N/RJv57X
> }
>
> jh.uxf:jh-tiles-deluxe {
> ; (c) 2007-2008 Jussi Härkönen
> ;
> ; This transform has been designed for easy creation and use of tiled
> images.
> ;
> ; 07-02-10 First version
> ; 07-02-23 Implemented View mode and screen coordinate parameters
> ::NgwJThn2tiVWvxtNQ43DQ
> +PwuGIdlzeZnYUgU4AH4iiagmmg402HSzDclo2lNSkLEls3tI/4
> 7M8QkUH2bRjhfwWcO
> +m7hcThcNt4VP9JEyPSupkuhRujzunQrYUyd0KOddBTpPPvQSrJckm3
> o2xSrJXSmey98s6tJklwfulx3stOxT7WaRuWm/i+kn
> +EjaumWk2UQrZGhRM8RoKClk3ISr5S
> BRmTq3ygPq1UFF+ISBXgf2InCZKVTbNdN
> +FeOZaI8eN5lLWt8FLWphEpLcA4f2iLwjYFK2Yk
> c+iVgxFIWNDiMeuzcuNlW4MlMeJToAMpIrPQgPJ45cDKRi7L
> +ufZJ5EkLnsffFLt1bpSrYMR
> gO6EV8Ymc6Q+eP518iArB9bX1oY34NSrHzTHI1u
> +gWnWEVXFLbrniQ8KHzvcgyr8b1G31SZV
> GXAWryCBP1OI451DhwkKb6UjiL2ozhQE1PWMuoBvnOIABDt182usOgRhu7/
> IUeBCfJ5cHxpy
> ydFs9kKGAV+ds3lnrYI5B+wThTpFTvSqPLh8cQF8d6M72PmMmA/IInb5/DLWkWRcWS/
> SQqYD
> m9KgSsMOFybnuBEjA/
> SGbDET0ZyobECSVJdyh0MfJZ1iVn9Dv8iX8CA8X1ewTfSdFIxcZV5r
> MecjyR/
> EA82INoIhEgCqEZFfD81iozBNnRqlEfpQbPg8KaaNtYB5kd89sCoBgYXD40AWUAVc
> VggIqDqaW5iWnATUzqARHqrt07CRCRbCoO1IQ3bMVzH45yMto2zUGBCNNJ0C
> +GBQ8OaFtoAQ
> EwFSlp/ALbDT1CgPYDaWJGhkeAB
> +NQ7WFahgODPVeHrSZgE29+Tz9ZAzmf2nJ7JfK4Ln9ZLO
>
> cpQOQ8rSfme30rr7RTbNMCu3KzYkv7SykfGCGZkNV8sJJ9rQHwcVGq6iBI3itf3Ud278T05q
> JJQS2Ub4eO5EDL2M7Y9U9A
> +XrCHzwAF3DLL73UNuH0vrYEDuy4Qj76iD6Ik6L8dk2SB7IL5/
> T0ZcA96GBm/WW6XwQiBJQFgspWxzY
> +MlpSBANIhStVevt9IE5Scxygg5lQw8dCDfTSIP7Zwp
> 01qp6WUjBPIE96g2PJk/yYOwPf9rEN/6uZPI/
> nlk0m68+RNl5anuSWwR3XhsywyJmvANBraY
> dDTtS7Ouivug5An7cfZJGPE8jovQh8eojQBLv2JkUZlIoJxwVormtawySdpQnSvgY/
> oOOoRf
>
> 3BBJmxPOY9md7gQvC6kiTHhO7imy1AOx1tAOUaAbGyMMMMTsC7RMU9vPlx5cHmfchBABfUr6
> T7brPvDfGp5Dm69vaTi1p1zJZSx3XrtR2AW4jCojFE+dA1O2sY/
> mZI5+PMuWCKgiPNJUCHGV
> CRlQ9kQQkB3u6QZJru6QSgbz5fWt4C9wVIQD7Vi9Nh2UwsSDH
> +GXEMbH8jQbDpbAsRUanvC3
>
> 6oiVS5CTKuiW2Sz4+BU7nO25O2P8Isf4hYPKQ5CLhlJhtVHDozj3QDEjsa6YEvMs5XcwcM9e
> YU9aU1InfMBadDSX0EDtpSRNX0IbUIOh+A+o0YwLw4nrveB2DfMyD9VLPPxHE/
> PJ9DjKdIm3
> a3tD/C6f/
> x2M21UYU4Qjaf0xrnf6omndZ6RwHM7aevmwO0Ow6NjihT7cnCfrmO2Xels0vDR7
>
> Sqd3l4xuoFxtC9ludqALtd5rgdvGaPx4eytCSfXgr7Js2bI8QyzFYDWvJjlTbKq1XmomXrv6
> xEzsjfiV0snNx4kwdvLJuBSWXPdn1jPRf/
> DchnJmjsiF7m40dTJJcKmRLm9ZjWu1+qBcRdkg
> JYyMclRcvBc4kdBAl+GC4SXiFEnwtMwLxBz+Fl0/gkCL94oEnNnCOQ/eQ4aEqFkW0Z5ga
> +nO
> SzPj3eHFIXJ4aJt7q8bdWJQ7OZYMsjA5+rmZMYzFFNABS7XQuR/
> cNEvHzYt436IL7uYmFjsP
> +TdrZlSFk1whZ/djCX5yf5+2HBqj8qprXMxm/
> oNg4L7YSRiW0xngYvVOtU2Iq7lkMFut7sV+
>
> XVyG8vtNkr3vTzLaIGdsgsiUyw7XLk2PNDl0FzwuZ2vosBC0faerHTtRXDx0qbtUWYtjgG/
> 9
> MG7B8Ubz
> +e2jbFZvpENxYKMxokXVB79K2kgYjmulz0rH3ZOyw40M6zAU3ue9QZncueg8cXlJ
> +ek4i9xXRxXe
> +QBlwNBLtfTnjBJyVsdM928mXY0US1JnqNBeoMr4wxNxPWWktiuXTdn51N7Z
> s5U/DSaNk/
> cLmNgXtjlNL4BFiefUX9INw0sE0xS00D9gAyqunrYz82slBfRvVqDZzhh2439L
> ygDlrWz9s4z6Fej9hYQeAvSc4turae8wUvhhDGscFjeyOiioHt5jf24wOMTt/
> Atfm5a9E7u6
> ZLHvTrtJqdw/OJQ7xEwfb/XVtrZE9wrHXg/bhlEp2jK318klDm6iHN
> +yCfrhe7TyafA2uo/f
> BkSev8M=
> }
>
>
>
>
>
> --
> Ron Barnett
> fracta...@gmail.com
> http://hiddendimension.com
> If life is a bowl of cherries why do I always get the pits?
> ^^^^^^^^^^^^^^^^^^^^^^^^
> >
Looking for last minute shopping deals? Find them fast with Yahoo! Search.
Never miss a thing. Make Yahoo your homepage.
-----Inline Attachment Follows-----
jh-tiles-deluxe {
; (c) 2007-2008 Jussi Härkönen
;; 07-02-10 First versionglobal:
; 07-02-23 Implemented View mode and screen coordinate parameters
; Image view area variables:
float imageAspect = (#width) / (#height)
float halfImageHeight
; Calculate image height as a function of the aspect ratio as in the
; location tab
if (imageAspect > 4.0/3.0)
halfImageHeight = 1.5
else
halfImageHeight = 2.0 / imageAspect
endif
; Scale image dimensions by magnification
halfImageHeight = halfImageHeight / #magn
; Precalculate screen dimensions
float imageHeight = 2 * halfImageHeight
float tileAspect
if (@useImageAspect)
tileAspect = imageAspect
else
tileAspect = @tileAspect
endif
float viewHeight
if (@useScreenCoordinates)
viewHeight = imageHeight
else
; Calculate height using the tile magnification
viewHeight = imageHeight * #magn / @tileMagnification
endif
float halfViewHeight = viewHeight / 2
complex relativeOffset = tileAspect * real(@offset) + flip(imag(@offset))
complex relativeTileSize = tileAspect + flip(1)
; Calculate angle in radians (given in degrees by the user)
float tileAngle = 0.0174533 * @tileAngle
transform:
; View coordinates denote the original coordinates used to calculate the
; fractal. #pixel (input) uses this coordinate system.
; Centered coordinates have the origin translated to view center and the axes
; are aligned parallel to the image edges.
; Relative centered coordinate have the origin in view center
; and the tile covers the area [-tileAspect,-1] x [tileAspect,1].
complex centeredLocation
complex relativeCenteredLocation
if (@viewMode != "Fixed grid")
; Calculate centered coordinates
centeredLocation = exp(flip(-#angle)) * (#pixel - #center)
; Calculate relative centered coordinates
relativeCenteredLocation = centeredLocation / halfImageHeight
else
; Use pixel directly and skip transformation to relative centered coordinates
relativeCenteredLocation = #pixel
endif
; Check if pixel is outside the tile (only in show tile mode)
if ((@viewMode == "One tile") && ((abs(real(relativeCenteredLocation)) > tileAspect) \
|| (abs(imag(relativeCenteredLocation)) > 1)))
; Pixel is outside the tile - Use solid color
#solid = true
else
; Pixel is visible
; Relative coordniates have the origin translated to lower left
; corner and the tile covers the area [0,0] x [tileAspect,1].
complex relativeLocation = (relativeCenteredLocation + relativeTileSize) / 2
; Apply scaling by number of tiles and offset
complex relativeOffsetLocation
if (@viewMode != "One tile")
relativeOffsetLocation = @numTiles * relativeLocation + relativeOffset
else
; Show tile only - don't scale by number of tiles
relativeOffsetLocation = relativeLocation + relativeOffset
endif
; Add offset
float xRelativeOffsetLocation = real(relativeOffsetLocation)
float yRelativeOffsetLocation = imag(relativeOffsetLocation)
if (@useSymmetry)
; Scale by 0.5 to compensate for symmetry transform later on so the
; tile size remains the same
xRelativeOffsetLocation = 0.5 * xRelativeOffsetLocation
yRelativeOffsetLocation = 0.5 * yRelativeOffsetLocation
endif
float xRrelativeTiledLocation = xRelativeOffsetLocation - tileAspect * floor(xRelativeOffsetLocation / tileAspect)
float yRrelativeTiledLocation = yRelativeOffsetLocation - floor(yRelativeOffsetLocation)
if (@useSymmetry)
; Use symmetry for continuous tiling
xRrelativeTiledLocation = tileAspect - 2 * abs(xRrelativeTiledLocation - tileAspect/2)
yRrelativeTiledLocation = tileAspect - 2 * abs(yRrelativeTiledLocation - 0.5)
endif
; Transform back to relative centered
relativeCenteredLocation = 2*(xRrelativeTiledLocation + flip(yRrelativeTiledLocation)) - relativeTileSize
centeredLocation = relativeCenteredLocation * halfViewHeight
; Transform back from centered to view coordinates
if (@useScreenCoordinates)
#pixel = #center + exp(flip(#angle)) * centeredLocation
else
#pixel = @tileCenter + exp(flip(tileAngle)) * centeredLocation
endif
endif
default:
title = "Tiles Deluxe"
param viewMode
caption = "View mode"
default = 0
enum = "One tile" "Tile grid" "Fixed grid"
hint = "View mode specifies how the tiles are shown. One tile mode simply \
shows one tile and clips outside areas. Tile grid shows a grid \
of tiles aligned to image edges and the Number of tiles parameter \
is used to specify the grid size. In the Fixed grid mode the \
visible area of the tile grid can be adjusted using the location \
tab."
endparam
complex param offset
caption = "Offset amount"
default = (0.0,0.0)
hint = "Specifies the amount of offset. 0 means no offset, (0.5,0.5) offsets edges to screen center."
endparam
bool param useSymmetry
caption = "Symmetric tiling"
default = true
hint = "Use symmetry (or mirroring) to achieve continuous tiling."
endparam
float param numTiles
caption = "Number of tiles"
default = 2
enabled = @viewMode == "Tile grid"
hint = "Specifies the number of times the tile is repeated in the Tile \
grid mode."
endparam
bool param useImageAspect
caption = "Use image aspect"
default = false
hint = "When checked, the image aspect ratio is used as the tile aspect \
ratio. Otherwise, the Tile aspect parameter is used."
endparam
float param tileAspect
caption = "Tile aspect ratio"
default = 1
enabled = @useImageAspect == false
hint = "Specifies the tile aspect ratio."
endparam
bool param useScreenCoordinates
caption = "Use screen coordinates"
default = true
hint = ""
endparam
complex param tileCenter
caption = "Tile center"
default = (0,0)
enabled = @useScreenCoordinates == false
hint = "Specifies the tile location center point."
endparam
float param tileMagnification
caption = "Tile magnification"
default = 1
enabled = @useScreenCoordinates == false
hint = "Specifies the tile location magnification."
endparam
float param tileAngle
caption = "Tile angle"
default = 0
enabled = @useScreenCoordinates == false
hint = "Specifies the tile location angle in degrees."
endparam
jh-tiles-deluxe {
; (c) 2007-2008 Jussi Härkönen
; This transform has been designed for easy creation and use of tiled images.
;
; 07-02-10 First version
; 07-02-23 Implemented View mode and screen coordinate parameters
global:
; Image view area variables:
float imageAspect = (#width) / (#height)
float halfImageHeight
; Calculate image height as a function of the aspect ratio as in the
; location tab
if (imageAspect > 4.0/3.0)
halfImageHeight = 1.5
else
halfImageHeight = 2.0 / imageAspect
endif
; Scale image dimensions by magnification
halfImageHeight = halfImageHeight / #magn
; Precalculate screen dimensions
float imageHeight = 2 * halfImageHeight
float tileAspect
if (@useImageAspect)
tileAspect = imageAspect
else
tileAspect = @tileAspect
endif
float viewHeight
if (@useScreenCoordinates)
viewHeight = imageHeight
else
; Calculate height using the tile magnification
viewHeight = imageHeight * #magn / @tileMagnification
endif
float halfViewHeight = viewHeight / 2
complex relativeOffset = tileAspect * real(@offset) + flip(imag(@offset))
complex relativeTileSize = tileAspect + flip(1)
; Calculate angle in radians (given in degrees by the user)
float tileAngle = 0.0174533 * @tileAngle
transform:
; View coordinates denote the original coordinates used to calculate the
; fractal. #pixel (input) uses this coordinate system.
; Centered coordinates have the origin translated to view center and the axes
; are aligned parallel to the image edges.
; Relative centered coordinate have the origin in view center
; and the tile covers the area [-tileAspect,-1] x [tileAspect,1].
complex centeredLocation
complex relativeCenteredLocation
if (@viewMode != "Fixed grid")
; Calculate centered coordinates
centeredLocation = exp(flip(-#angle)) * (#pixel - #center)
; Calculate relative centered coordinates
relativeCenteredLocation = centeredLocation / halfImageHeight
else
; Use pixel directly and skip transformation to relative centered coordinates
relativeCenteredLocation = #pixel
endif
; Check if pixel is outside the tile (only in show tile mode)
if ((@viewMode == "One tile") && ((abs(real(relativeCenteredLocation)) > tileAspect) \
|| (abs(imag(relativeCenteredLocation)) > 1)))
; Pixel is outside the tile - Use solid color
#solid = true
else
; Pixel is visible
; Relative coordniates have the origin translated to lower left
; corner and the tile covers the area [0,0] x [tileAspect,1].
complex relativeLocation = (relativeCenteredLocation + relativeTileSize) / 2
; Apply scaling by number of tiles and offset
complex relativeOffsetLocation
if (@viewMode != "One tile")
relativeOffsetLocation = @numTiles * relativeLocation + relativeOffset
else
; Show tile only - don't scale by number of tiles
relativeOffsetLocation = relativeLocation + relativeOffset
endif
; Add offset
float xRelativeOffsetLocation = real(relativeOffsetLocation)
float yRelativeOffsetLocation = imag(relativeOffsetLocation)
if (@useSymmetry)
; Scale by 0.5 to compensate for symmetry transform later on so the
; tile size remains the same
xRelativeOffsetLocation = 0.5 * xRelativeOffsetLocation
yRelativeOffsetLocation = 0.5 * yRelativeOffsetLocation
endif
float xRrelativeTiledLocation = xRelativeOffsetLocation - tileAspect * floor(xRelativeOffsetLocation / tileAspect)
float yRrelativeTiledLocation = yRelativeOffsetLocation - floor(yRelativeOffsetLocation)
if (@useSymmetry)
; Use symmetry for continuous tiling
xRrelativeTiledLocation = tileAspect - 2 * abs(xRrelativeTiledLocation - tileAspect/2)
yRrelativeTiledLocation = tileAspect - 2 * abs(yRrelativeTiledLocation - 0.5)
endif
; Transform back to relative centered
relativeCenteredLocation = 2*(xRrelativeTiledLocation + flip(yRrelativeTiledLocation)) - relativeTileSize
centeredLocation = relativeCenteredLocation * halfViewHeight
; Transform back from centered to view coordinates
if (@useScreenCoordinates)
#pixel = #center + exp(flip(#angle)) * centeredLocation
else
#pixel = @tileCenter + exp(flip(tileAngle)) * centeredLocation
endif
endif
default:
title = "Tiles Deluxe"
param viewMode
caption = "View mode"
default = 0
enum = "One tile" "Tile grid" "Fixed grid"
hint = "View mode specifies how the tiles are shown. One tile mode simply \
shows one tile and clips outside areas. Tile grid shows a grid \
of tiles aligned to image edges and the Number of tiles parameter \
is used to specify the grid size. In the Fixed grid mode the \
visible area of the tile grid can be adjusted using the location \
tab."
endparam
complex param offset
caption = "Offset amount"
default = (0.0,0.0)
hint = "Specifies the amount of offset. 0 means no offset, (0.5,0.5) offsets edges to screen center."
endparam
bool param useSymmetry
caption = "Symmetric tiling"
default = true
hint = "Use symmetry (or mirroring) to achieve continuous tiling."
endparam
float param numTiles
caption = "Number of tiles"
default = 2
enabled = @viewMode == "Tile grid"
hint = "Specifies the number of times the tile is repeated in the Tile \
grid mode."
endparam
bool param useImageAspect
caption = "Use image aspect"
default = false
hint = "When checked, the image aspect ratio is used as the tile aspect \
ratio. Otherwise, the Tile aspect parameter is used."
endparam
float param tileAspect
caption = "Tile aspect ratio"
default = 1
enabled = @useImageAspect == false
hint = "Specifies the tile aspect ratio."
endparam
bool param useScreenCoordinates
caption = "Use screen coordinates"
default = true
hint = ""
endparam
complex param tileCenter
caption = "Tile center"
default = (0,0)
enabled = @useScreenCoordinates == false
hint = "Specifies the tile location center point."
endparam
float param tileMagnification
caption = "Tile magnification"
default = 1
enabled = @useScreenCoordinates == false
hint = "Specifies the tile location magnification."
endparam
float param tileAngle
caption = "Tile angle"
default = 0
enabled = @useScreenCoordinates == false
hint = "Specifies the tile location angle in degrees."
endparam
}