Pane(s)_display { ; All credits to Setemkia FallingTree. ; as the original author. ; Modificationed. transform: IF @pane <= @rows*@cols INT ipw = trunc((#width -(@cols+1)*@gutter)/@cols) INT iph = trunc((#height-(@rows+1)*@gutter)/@rows) FLOAT fhg = (#width -ipw*@cols)/(@cols+1) FLOAT fvg = (#height-iph*@rows)/(@rows+1) FLOAT fpw = ipw FLOAT fph = iph IF @pane == 0 IF @gutter > 0 INT r = @rows BOOL vin = FALSE FLOAT top = 0 FLOAT bottom = fph WHILE !vin && r > 0 top = top +fvg bottom = bottom+fvg IF imag(#screenpixel) >= round(top) && \ imag(#screenpixel) < round(bottom) vin = TRUE ENDIF top = top +fph bottom = bottom+fph r = r-1 ENDWHILE INT c = @cols BOOL hin = FALSE FLOAT left = 0 FLOAT right = fpw WHILE !hin && c > 0 left = left +fhg right = right+fhg IF real(#screenpixel) >= round(left) && \ real(#screenpixel) < round(right) hin = TRUE ENDIF left = left +fpw right = right+fpw c = c-1 ENDWHILE IF vin && hin #solid = TRUE ENDIF ENDIF ELSE FLOAT fcol = (@pane-1)%@cols FLOAT frow = trunc((@pane-1)/@cols) FLOAT left = fcol*ipw + round((fcol+1)*fhg) FLOAT top = frow*iph + round((frow+1)*fvg) FLOAT right = left+ipw FLOAT bottom = top +iph IF real(#screenpixel) >= left && real(#screenpixel) < right && \ imag(#screenpixel) >= top && imag(#screenpixel) < bottom IF @ctr COMPLEX rot = #e^flip(#angle) #pixel = (#pixel-#center)*conj(rot)*#magn #pixel = #pixel + ((1-(left+right)/real(#screenmax))*2.0) - \ flip((1-(top+bottom)/imag(#screenmax))*1.5) #pixel = (real(#pixel)*real(#screenmax)/fpw) + \ flip(imag(#pixel)*imag(#screenmax)/fph) #pixel = #pixel/#magn*rot+#center ENDIF ELSE #solid = TRUE ENDIF ENDIF ENDIF default: title = "Display Panes" PARAM pane caption = "Paint This Pane" hint = "Integer specifying which pane is transparent (painted). Zero \ indicates the gutter (boarder) area. Otherwise, an integer \ indicating the pane. Panes are counted from left to right \ working from the top row to the bottom row." default = 0 min = 0 ENDPARAM PARAM cols caption = "Column Count" hint = "Number of columns of images; an integer." default = 2 min = 1 ENDPARAM PARAM rows caption = "Row Count" hint = "Number of rows of images; an integer." default = 2 min = 1 ENDPARAM PARAM gutter caption = "Frame Width" hint = "For image spacing or framing you may specify the nominal \ number of pixels separating the panes. The frame widths \ between panes may vary by a pixel so pane widths will be \ identical. If frame width is zero, rounding is handled by \ painting extra pixels at the right and bottom as solid." default = 5 min = 0 ENDPARAM PARAM ctr caption = "Fit Image" hint = "By default the image is scaled to lie in the pane as it does \ on the whole canvas. For completeness, you have the option to \ turn this off and position and scale things manually." default = TRUE ENDPARAM } Frames { ; Similiar to Sylvie Gallet's Tryptich, ; makes it possible to subdivide the image ; into columns and rows (up to 12); ; generate corresponding frames with ; "Frame" coloring method in jbo.ucl ; This is a modification from raf.uxf ; No longer available since a long time ; Credits to Ralph Feltens as the original author ; Jos Boogen June 2004 transform: bool use_c = @central float w = #width/(1+@ncols) float h = #height/(1+@nrows) float iw = 4 / #magn ;image width as complex number, assuming normal image aspect ratio float ih = 3 / #magn ;image height as complex number, assuming normal image aspect ratio int cn = @colno int rn = @rowno int nc = @ncols int nr = @nrows if #height/#width > 0.75 ;other image aspect ratios ih = (4 * #height) / (#width * #magn) endif if #height/#width < 0.75 ;other image aspect ratios iw = (3 * #width) / (#height * #magn) endif if (abs(real(@shift))<1) ;values between -1 and 1 will not shift float pxshft = 0 float ixshft = 0 else float pxshft = #width/real(@shift) float ixshft = iw/real(@shift) endif if (abs(imag(@shift))<1) ;values between -1 and 1 will not shift float pyshft = 0 float iyshft = 0 else float pyshft = #height/imag(@shift) float iyshft = ih/imag(@shift) endif float xp = real(#screenpixel) - pxshft float yp = imag(#screenpixel) - pyshft if cn > nc ;so "column number" will not exceed "number of columns" cn = nc endif if rn > nr ;so "row number" will not exceed "number of rows" rn = nr endif if (round(xp/w - 0.5) != cn) || (round(yp/h - 0.5) != rn) #solid = true elseif (use_c == true) #pixel = (#pixel - #center) * e^-flip(#angle) + #center #pixel = #pixel + ((nc/2) - cn) * (iw/(nc + 1)) - ixshft #pixel = #pixel - flip(((nr/2) - rn) * (ih/(nr + 1))) + flip(iyshft) #pixel = (#pixel - #center) * e^flip(#angle) + #center endif default: title = "Frames" param colno caption = "Column Number" enum = "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" endparam param ncols caption = "Number of Columns" enum = "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" default = 1 endparam param rowno caption = "Row Number" enum = "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" endparam param nrows caption = "Number of Rows" enum = "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" default = 1 endparam param central caption = "Use central part of the fractal" default = false endparam param shift caption = "Shift right and down" hint = "shift this fraction of the image's size to the right and down; \ e.g. (4,3) will shift the frame to the right by a quarter of the \ width and down by a third of the height of the image \ *values between -1 and 1 will yield no shifting*" endparam } shapes1 { ; red williams, modified by Jos Boogen ; This transform allows the artist to define up to ten ; geometrical figures within a fractal image. Either the ; area outside each figure or the figure itself may be ; assigned the solid color. This allows the artist to ; "cut out" portions of the layer and use them as "appliques" ; or to cut "holes" through a layer allowing lower layers ; to show through. ; ; For the 'general' shape the region is defined by: ; (x/a)^p + (y/b)^p < 1 ; ; x is horizontal distance from the center of shape ; y is vertical distance from center of shape ; (x,y include any rotation that has been done to the shape) ; a,b are the semi-axes ; ; p is some power: ; 0 < p < 1 - concave sides ; p = 1 - straight sides ; p > 1 - convex sides ; ; The astroid, rhombus & ellipse are all special cases of the above. ; A rectangle can be obtained with a slight modification ; ; June 2004: ; Added functionality by Jos Boogen: Shape's position can now ; be fixed relative to screen position ; (i.e. independent of position and magnification of the image) ; complex c0 = @center0 ; assume center is fixed complex c1 = @center1 ; assume center is fixed complex c2 = @center2 ; assume center is fixed complex c3 = @center3 ; assume center is fixed complex c4 = @center4 ; assume center is fixed complex c5 = @center5 ; assume center is fixed complex c6 = @center6 ; assume center is fixed complex c7 = @center7 ; assume center is fixed complex c8 = @center8 ; assume center is fixed complex c9 = @center9 ; assume center is fixed float mag0 = 1 ; assume shapesize is independent of magnification float mag1 = 1 ; assume shapesize is independent of magnification float mag2 = 1 ; assume shapesize is independent of magnification float mag3 = 1 ; assume shapesize is independent of magnification float mag4 = 1 ; assume shapesize is independent of magnification float mag5 = 1 ; assume shapesize is independent of magnification float mag6 = 1 ; assume shapesize is independent of magnification float mag7 = 1 ; assume shapesize is independent of magnification float mag8 = 1 ; assume shapesize is independent of magnification float mag9 = 1 ; assume shapesize is independent of magnification float ang0 = 0 ; assume shape's position is independent of rotation float ang1 = 0 ; assume shape's position is independent of rotation float ang2 = 0 ; assume shape's position is independent of rotation float ang3 = 0 ; assume shape's position is independent of rotation float ang4 = 0 ; assume shape's position is independent of rotation float ang5 = 0 ; assume shape's position is independent of rotation float ang6 = 0 ; assume shape's position is independent of rotation float ang7 = 0 ; assume shape's position is independent of rotation float ang8 = 0 ; assume shape's position is independent of rotation float ang9 = 0 ; assume shape's position is independent of rotation IF (@shapesize0) ; shape will be adapted to image size/magnification mag0 = #magn ENDIF IF (@shapesize1) ; shape will be adapted to image size/magnification mag1 = #magn ENDIF IF (@shapesize2) ; shape will be adapted to image size/magnification mag2 = #magn ENDIF IF (@shapesize3) ; shape will be adapted to image size/magnification mag3 = #magn ENDIF IF (@shapesize4) ; shape will be adapted to image size/magnification mag4 = #magn ENDIF IF (@shapesize5) ; shape will be adapted to image size/magnification mag5 = #magn ENDIF IF (@shapesize6) ; shape will be adapted to image size/magnification mag6 = #magn ENDIF IF (@shapesize7) ; shape will be adapted to image size/magnification mag7 = #magn ENDIF IF (@shapesize8) ; shape will be adapted to image size/magnification mag8 = #magn ENDIF IF (@shapesize9) ; shape will be adapted to image size/magnification mag9 = #magn ENDIF IF (@centermove0) ; relative center requested c0 = #center ; center is image center ang0 = #angle ; compensation for image rotation ENDIF IF (@centermove1) ; relative center requested c1 = #center ; center is image center ang1 = #angle ; compensation for image rotation ENDIF IF (@centermove2) ; relative center requested c2 = #center ; center is image center ang2 = #angle ; compensation for image rotation ENDIF IF (@centermove3) ; relative center requested c3 = #center ; center is image center ang3 = #angle ; compensation for image rotation ENDIF IF (@centermove4) ; relative center requested c4 = #center ; center is image center ang4 = #angle ; compensation for image rotation ENDIF IF (@centermove5) ; relative center requested c5 = #center ; center is image center ang5 = #angle ; compensation for image rotation ENDIF IF (@centermove6) ; relative center requested c6 = #center ; center is image center ang6 = #angle ; compensation for image rotation ENDIF IF (@centermove7) ; relative center requested c7 = #center ; center is image center ang7 = #angle ; compensation for image rotation ENDIF IF (@centermove8) ; relative center requested c8 = #center ; center is image center ang8 = #angle ; compensation for image rotation ENDIF IF (@centermove9) ; relative center requested c9 = #center ; center is image center ang9 = #angle ; compensation for image rotation ENDIF bool in = false IF (@shape0!=0) complex pix1 = (#pixel - c0) * exp(flip(-ang0)) complex pix2 = (pix1 - @shift0/mag0) * exp(flip(-@tilt0*pi/180)) complex pix3 = (real(pix2)/@width0 + flip(imag(pix2)/@height0)) * mag0 IF (@shape0==1) IF ( |pix3| < 1) in = true ENDIF ELSEIF (@shape0==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape0==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape0==4) IF ((abs(real(pix3))^@power0 + abs(imag(pix3))^@power0) < 1) in = true ENDIF ENDIF ENDIF IF (@shape1!=0) && in != true complex pix1 = (#pixel - c1) * exp(flip(-ang1)) complex pix2 = (pix1 - @shift1/mag1) * exp(flip(-@tilt1*pi/180)) complex pix3 = (real(pix2)/@width1 + flip(imag(pix2)/@height1)) * mag1 IF (@shape1==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape1==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape1==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape1==4) IF ((abs(real(pix3))^@power1 + abs(imag(pix3))^@power1) < 1) in = true ENDIF ENDIF ENDIF IF (@shape2!=0) && in != true complex pix1 = (#pixel - c2) * exp(flip(-ang2)) complex pix2 = (pix1 - @shift2/mag2) * exp(flip(-@tilt2*pi/180)) complex pix3 = (real(pix2)/@width2 + flip(imag(pix2)/@height2)) * mag2 IF (@shape2==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape2==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape2==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape2==4) IF ((abs(real(pix3))^@power2 + abs(imag(pix3))^@power2) < 1) in = true ENDIF ENDIF ENDIF IF (@shape3!=0) && in != true complex pix1 = (#pixel - c3) * exp(flip(-ang3)) complex pix2 = (pix1 - @shift3/mag3) * exp(flip(-@tilt3*pi/180)) complex pix3 = (real(pix2)/@width3 + flip(imag(pix2)/@height3)) * mag3 IF (@shape3==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape3==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape3==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape3==4) IF ((abs(real(pix3))^@power3 + abs(imag(pix3))^@power3) < 1) in = true ENDIF ENDIF ENDIF IF (@shape4!=0) && in != true complex pix1 = (#pixel - c4) * exp(flip(-ang4)) complex pix2 = (pix1 - @shift4/mag4) * exp(flip(-@tilt4*pi/180)) complex pix3 = (real(pix2)/@width4 + flip(imag(pix2)/@height4)) * mag4 IF (@shape4==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape4==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape4==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape4==4) IF ((abs(real(pix3))^@power4 + abs(imag(pix3))^@power4) < 1) in = true ENDIF ENDIF ENDIF IF (@shape5!=0) && in != true complex pix1 = (#pixel - c5) * exp(flip(-ang5)) complex pix2 = (pix1 - @shift5/mag5) * exp(flip(-@tilt5*pi/180)) complex pix3 = (real(pix2)/@width5 + flip(imag(pix2)/@height5)) * mag5 IF (@shape5==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape5==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape5==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape5==4) IF ((abs(real(pix3))^@power5 + abs(imag(pix3))^@power5) < 1) in = true ENDIF ENDIF ENDIF IF (@shape6!=0) && in != true complex pix1 = (#pixel - c6) * exp(flip(-ang6)) complex pix2 = (pix1 - @shift6/mag6) * exp(flip(-@tilt6*pi/180)) complex pix3 = (real(pix2)/@width6 + flip(imag(pix2)/@height6)) * mag6 IF (@shape6==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape6==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape6==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape6==4) IF ((abs(real(pix3))^@power6 + abs(imag(pix3))^@power6) < 1) in = true ENDIF ENDIF ENDIF IF (@shape7!=0) && in != true complex pix1 = (#pixel - c7) * exp(flip(-ang7)) complex pix2 = (pix1 - @shift7/mag7) * exp(flip(-@tilt7*pi/180)) complex pix3 = (real(pix2)/@width7 + flip(imag(pix2)/@height7)) * mag7 IF (@shape7==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape7==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape7==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape7==4) IF ((abs(real(pix3))^@power7 + abs(imag(pix3))^@power7) < 1) in = true ENDIF ENDIF ENDIF IF (@shape8!=0) && in != true complex pix1 = (#pixel - c8) * exp(flip(-ang8)) complex pix2 = (pix1 - @shift8/mag8) * exp(flip(-@tilt8*pi/180)) complex pix3 = (real(pix2)/@width8 + flip(imag(pix2)/@height8)) * mag8 IF (@shape8==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape8==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape8==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape8==4) IF ((abs(real(pix3))^@power8 + abs(imag(pix3))^@power8) < 1) in = true ENDIF ENDIF ENDIF IF (@shape9!=0) && in != true complex pix1 = (#pixel - c9) * exp(flip(-ang9)) complex pix2 = (pix1 - @shift9/mag9) * exp(flip(-@tilt9*pi/180)) complex pix3 = (real(pix2)/@width9 + flip(imag(pix2)/@height9)) * mag9 IF (@shape9==1) IF ( |pix3| < 1 ) in = true ENDIF ELSEIF (@shape9==2) pix3 = pix3 * exp(flip(pi/4)) IF ((abs(real(pix3)) + abs(imag(pix3))) < 1.4142) in = true ENDIF ELSEIF (@shape9==3) IF ((abs(real(pix3))^(2/3) + abs(imag(pix3))^(2/3)) < 1) in = true ENDIF ELSEIF (@shape9==4) IF ((abs(real(pix3))^@power9 + abs(imag(pix3))^@power9) < 1) in = true ENDIF ENDIF ENDIF IF @mode == 1 IN = !in ENDIF IF in == false #solid = true ENDIF default: title = "Shapes jbo" param mode caption = "Mode" default = 0 enum = "Opaque" "Transparent" endparam param shape0 caption = "Shape 0" default = 1 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center0 caption = "Center 0" default = (0.0,0.0) endparam param width0 caption = "Width 0" default = 1.0 endparam param height0 caption = "Height 0" default = 1.0 endparam param tilt0 caption = "Tilt Angle 0 (degrees)" default = 0.0 endparam param power0 caption = "Power 0" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove0 caption = "Use Screen Center 0" default = FALSE hint = "If set, the shape's center will be at the center of \ the window - useful in conjunction with *Adapt shape size*" endparam param shapesize0 caption = "Adapt shape size 0" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center*" endparam param shift0 caption = "shift 0" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape1 caption = "Shape 1" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center1 caption = "Center 1" default = (0.0,0.0) endparam param width1 caption = "Width 1" default = 1.0 endparam param height1 caption = "Height 1" default = 1.0 endparam param tilt1 caption = "Tilt Angle 1 (degrees)" default = 0.0 endparam param power1 caption = "Power 1" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove1 caption = "Use Screen Center 1" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize1 caption = "Adapt shape size 1" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift1 caption = "shift 1" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape2 caption = "Shape 2" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center2 caption = "Center 2" default = (0.0,0.0) endparam param width2 caption = "Width 2" default = 1.0 endparam param height2 caption = "Height 2" default = 1.0 endparam param tilt2 caption = "Tilt Angle 2 (degrees)" default = 0.0 endparam param power2 caption = "Power 2" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove2 caption = "Use Screen Center 2" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize2 caption = "Adapt shape size 2" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift2 caption = "shift 2" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape3 caption = "Shape 3" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center3 caption = "Center 3" default = (0.0,0.0) endparam param width3 caption = "Width 3" default = 1.0 endparam param height3 caption = "Height 3" default = 1.0 endparam param tilt3 caption = "Tilt Angle 3 (degrees)" default = 0.0 endparam param power3 caption = "Power 3" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove3 caption = "Use Screen Center 3" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize3 caption = "Adapt shape size 3" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift3 caption = "shift 3" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape4 caption = "Shape 4" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center4 caption = "Center 4" default = (0.0,0.0) endparam param width4 caption = "Width 4" default = 1.0 endparam param height4 caption = "Height 4" default = 1.0 endparam param tilt4 caption = "Tilt Angle 4 (degrees)" default = 0.0 endparam param power4 caption = "Power 4" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove4 caption = "Use Screen Center 4" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize4 caption = "Adapt shape size 4" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift4 caption = "shift 4" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape5 caption = "Shape 5" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center5 caption = "Center 5" default = (0.0,0.0) endparam param width5 caption = "Width 5" default = 1.0 endparam param height5 caption = "Height 5" default = 1.0 endparam param tilt5 caption = "Tilt Angle 5 (degrees)" default = 0.0 endparam param power5 caption = "Power 5" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove5 caption = "Use Screen Center 5" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize5 caption = "Adapt shape size 5" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift5 caption = "shift 5" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape6 caption = "Shape 6" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center6 caption = "Center 6" default = (0.0,0.0) endparam param width6 caption = "Width 6" default = 1.0 endparam param height6 caption = "Height 6" default = 1.0 endparam param tilt6 caption = "Tilt Angle 6 (degrees)" default = 0.0 endparam param power6 caption = "Power 6" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove6 caption = "Use Screen Center 6" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize6 caption = "Adapt shape size 6" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift6 caption = "shift 6" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape7 caption = "Shape 7" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center7 caption = "Center 7" default = (0.0,0.0) endparam param width7 caption = "Width 7" default = 1.0 endparam param height7 caption = "Height 7" default = 1.0 endparam param tilt7 caption = "Tilt Angle 7 (degrees)" default = 0.0 endparam param power7 caption = "Power 7" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove7 caption = "Use Screen Center 7" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize7 caption = "Adapt shape size 7" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift7 caption = "shift 7" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape8 caption = "Shape 8" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center8 caption = "Center 8" default = (0.0,0.0) endparam param width8 caption = "Width 8" default = 1.0 endparam param height8 caption = "Height 8" default = 1.0 endparam param tilt8 caption = "Tilt Angle 8 (degrees)" default = 0.0 endparam param power8 caption = "Power 8" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove8 caption = "Use Screen Center 8" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize8 caption = "Adapt shape size 8" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift8 caption = "shift 8" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam param shape9 caption = "Shape 9" default = 0 enum = "none" "ellipse" "rectangle" "astroid" "general" endparam param center9 caption = "Center 9" default = (0.0,0.0) endparam param width9 caption = "Width 9" default = 1.0 endparam param height9 caption = "Height 9" default = 1.0 endparam param tilt9 caption = "Tilt Angle 9 (degrees)" default = 0.0 endparam param power9 caption = "Power 9" default = 0.666666666666 hint = "general shape only. <1 concave, >1 convex" endparam param centermove9 caption = "Use Screen Center 9" default = FALSE hint = "If set, the shape's center will be fixed relative to the center \ of the window - useful in conjunction with *Adapt shape size* " endparam param shapesize9 caption = "Adapt shape size 9" default = FALSE hint = "If set, the shape's size will be adapted with the magnification \ of the window - useful in conjunction with *Use screen center* " endparam param shift9 caption = "shift 9" default = (0.0,0.0) hint = "This is the amount the shape's center will be shifted - use \ real values in the range from -3 to +3 and imag values in the \ range from -2.5 to +2.5 when *Use screen center* and \ *Adapt shape size* are enabled " endparam } Lake1 { ; ; Transformation written by Sylvie Gallet ; December 1999 ; Fourth version ; ; Additional parameters by Ralph Feltens ; Modifications by Jos Boogen ; June 2004 transform: sh1 = 1i*imag(@shift) sh2 = real(@shift) if (@use_sc) centr = #center else centr = @wl endif if (@use_la) ang = #angle else ang = @rot * pi / 180 endif if (ang != 0) #pixel = (#pixel - centr) * e^(-ang*1i) + centr - sh1/#magn else #pixel = #pixel - sh1/#magn endif y = imag(#pixel) if (y < imag(centr)) dy = imag(centr) - y + sh2/#magn y = 2 * imag(centr) - y y = y + @a * dy * sin (@f * (dy * #magn)^@damping) #pixel = real(#pixel) + flip(y) endif if (ang != 0) #pixel = (#pixel - centr + sh1/#magn) * e^(ang*1i) + centr else #pixel = #pixel + sh1/#magn endif default: title = "Lake jbo" param wl caption = "Water level" default = (0.0,0.0) endparam param use_sc caption = "Use screen center" default = true hint = "If set, the waterline will allways go through the screen center" endparam param rot caption = "Angle" default = 0.0 min = -360.0 max = 360.0 endparam param use_la caption = "Use Location tab angle" default = true hint = "If set, the waterline will allways be horizontal" endparam param a caption = "Amplitude" default = 0.2 hint = "The height of the waves" endparam param f caption = "Frequency" default = 300 min = 0.0 endparam param damping caption = "Damping Exponent" default = 0.2 hint = "use values from 0 to 1; lower values will \ produce broader waves in the foreground" endparam param shift caption = "Shift" default = (0.0,0.0) hint = "The lower value will shift the waterline \ (irrespective of magnification); use values from -1 to 1.\ The upper value will adapt the waves' frequency and Amplitude \ when merging layers, the sum of the two values should always \ be the same in every layer" endparam }