home *** CD-ROM | disk | FTP | other *** search
- /* Allow commands to return results */
-
- options results
-
- /* On error, goto ERROR:. Comment out this line if you wish to */
- /* perform your own error checking. */
-
- signal on error
-
- 'PROJECT_LOCK'
-
- /* BEGIN PROGRAM *************************************************/
-
- /*
- PROGRAM: Tile.dsdr
- DESCRIPTION: General purpose script for tiling objects on a
- page. Place an object on the page, leaving a
- top and left margin and the object will be
- tiled to fill the page, leaving the same margin
- for the bottom and right of the page. A gutter
- value may be given to leave space between the
- tiled objects.
- DATE: 03/11/96
- AUTHOR: Andy Dean
- */
-
- /* Gutter values, in points */
-
- GutterX = 0
- GutterY = 0
-
- REDRAW_OFF
-
- /* Get info on the selected object(s) */
-
- OBJECT_SPECS_GET stem 'srcobj.'
-
- /* If there's more than 1 object, group them */
- /* and store their name */
-
- if srcobj.numselected > 1 then do
- OBJECT_GROUP stem 'srcgrp.'
-
- srcname = srcgrp.name
- end
- else do
- srcname = srcobj.name
- end
-
- /* Get the object specs */
-
- OBJECT_SPECS_GET stem 'objspec.'
-
- marginx = objspec.left
- marginy = objspec.top
-
- objw = objspec.width
- objh = objspec.height
-
- /* Get the page specs */
-
- PAGE_SPECS_GET stem 'pagespec.'
-
- /* How many times can we tile horizontally ? */
-
- numx = pagespec.width - (2 * marginx)
- numx = numx / (objw + GutterX)
-
- /* How many times can we tile vertically ? */
-
- numy = pagespec.height - (2 * marginy)
- numy = numy / (objh + GutterY)
-
- /* Tile the objects */
-
- do ly = 0 to (numy - 1)
- do lx = 0 to (numx - 1)
- /* Don't clone onto original */
-
- if lx + ly = 0 then do
- nop
-
- end
- else do
- /* Clone object */
-
- OBJECT_CLONE '"'lx * (objw + GutterX)'"',
- '"'ly * (objh + GutterY)'"',
-
- /* Ungroup, if the src obj was ungrouped */
-
- if srcobj.numselected > 1 then
- OBJECT_UNGROUP
-
- /* Select the source object again */
-
- OBJECT_DESELECT
- OBJECT_SELECT '"'srcname'"'
-
- end
- end
- end
-
- /* If it was grouped, ungroup */
-
- if srcobj.numselected > 1 then
- OBJECT_UNGROUP
-
- REDRAW_ON
-
- /* END PROGRAM ***************************************************/
-
- 'PROJECT_UNLOCK'
-
- exit
-
- /* On ERROR */
-
- ERROR:
-
- 'PROJECT_UNLOCK'
-
- /* If we get here, either an error occurred with the command's */
- /* execution or there was an error with the command itself. */
- /* In the former case, rc2 contains the error message and in */
- /* the latter, rc2 contains an error number. SIGL contains */
- /* the line number of the command which caused the jump */
- /* to ERROR: */
-
- if datatype(rc2,'NUMERIC') == 1 then do
- /* See if we can describe the error with a string */
-
- select
- when rc2 == 103 then
- err_string = "ERROR 103, "||,
- "out of memory at line "||SIGL
- when rc2 == 114 then
- err_string = "ERROR 114, "||,
- "bad command template at line "||SIGL
- when rc2 == 115 then
- err_string = "ERROR 115, "||,
- "bad number for /N argument at line "||SIGL
- when rc2 == 116 then
- err_string = "ERROR 116, "||,
- "required argument missing at line "||SIGL
- when rc2 == 117 then
- err_string = "ERROR 117, "||,
- "value after keywork missing at line "||SIGL
- when rc2 == 118 then
- err_string = "ERROR 118, "||,
- "wrong number of arguments at line "||SIGL
- when rc2 == 119 then
- err_string = "ERROR 119, "||,
- "unmatched quotes at line "||SIGL
- when rc2 == 120 then
- err_string = "ERROR 120, "||,
- "line too long at line "||SIGL
- when rc2 == 236 then
- err_string = "ERROR 236, "||,
- "unknown command at line "||SIGL
- otherwise
- err_string = "ERROR "||rc2||", at line "||SIGL
- end
- end
- else if rc2 == 'RC2' then do
- err_string = "ERROR in command at line "||SIGL
- end
- else do
- err_string = rc2||", line "||SIGL
- end
-
- req_message TEXT '"'err_string'"'
-
- exit
-