Autograph_params(3NCARG)
✨ Autograph_params ✨
welcome to the Autograph_params(3NCARG) page, straight outta the NCAR GRAPHICS manual 🎀 this one's a whole saga so buckle up bestie
💖 NAME 💖
Autograph_params — this doc briefly describes all the Autograph internal parameters. yes, all of them. 🫶
🦋 DESCRIPTION 🦋
okay so. The Autograph control parameters live in a labeled common block called AGCONP. There are currently 485 of them, of which 336 are "primary" and 149 are "secondary".
- primary control parameters have default values and are subject to change by a user program, so you can produce some desired effect on how Autograph behaves and/or on the nature of a graph being drawn. main character energy, they get to change. 👑
- secondary control parameters are computed by Autograph itself and are not normally subject to change by a user program. they're just built different, no notes. 💅
Your access to these parameters is provided by the routines AGGETC, AGGETF, AGGETI, AGGETP, AGGETR, AGSETC, AGSETF, AGSETI, AGSETP, and AGSETR. The first argument in a call to one of these routines is a character string naming a group of parameters (maybe containing only a single parameter) which you wish to "set" or "get". Each such string has the form
´k1/k2/k3/ . . . kn.´
where k1 is a keyword identifying a major group of parameters, k2 is a keyword identifying a subgroup of that major group, k3 is a keyword identifying a further subgroup of that subgroup, and so on. Only the first three characters of k1 and the first two characters of the others need be used; also, certain keywords may be omitted. lowkey generous of them ngl.
Because of certain portability considerations, all of the parameters have real values. The routine AGSETP may be used to set the real values of the parameters in any group, and the routine AGGETP to retrieve those values. Either of the routines AGSETF or AGSETR may be used to set the real value of a single parameter, and either of the routines AGGETF or AGGETR may be used to get the real value of a single parameter. so many ways to say the same thing, and honestly? slay. ✨
Some parameters may only take on discrete integral values (like "0.", "1.", "-6.", or "65535.") and are used in roles for which integers would normally be used. The routine AGSETI may be used to set the integer value of a single parameter of this type and the routine AGGETI may be used to get the integer value of a single parameter of this type. 🧮
Other parameters intrinsically represent character strings; the real value of the parameter is an identifier, generated when the character string is passed to Autograph and enabling the character string to be retrieved from Autograph's character storage space when it is needed. The routine AGSETC must be used to set the character-string value associated with a single parameter of this type and the routine AGGETC must be used to get the character-string value associated with a single parameter of this type. must is doing a lot of heavy lifting there, but periodt. 🔥
Many parameters have a limited range of acceptable values. What generally happens when a parameter is given an out-of-range value is that Autograph (usually the routine AGSTUP) resets that value to the value at the nearer end of the acceptable range. it's giving "clipped, moving on". ✂️
Setting certain parameters (individually, rather than as part of a multi-parameter group) implies, as a side effect, "special action" by the routineAGSETP(which may be called directly by you or indirectly by way of your call toAGSETC,AGSETF,AGSETI, orAGSETR). For example, setting the parameter´BACKGROUND.´to request a particular background type causes a number of other parameters to be changed in order to achieve the desired result. one tiny set and the whole friend group rearranges. 🌊
Each of the named parameter groups is described below. Square brackets are used to mark portions of a name which may be omitted; the notation ´k1/k2/ . . . [ki/]...kn.´ indicates that the keyword ki and the following slash may be omitted. In each description, the simplest form of the name is given. If a multi-parameter group is named, its subgroups are listed, in the order in which they occur in the group. If a single parameter is named, the default value of that parameter is given and any "special action" by AGSETP is described.
👑 ´PRIMARY.´ 👑
Simplest form of name: ´PRI.´
This group consists of all 336 primary control parameters, in the order in which they appear below. It was originally provided to give users the capability of saving and restoring the state of Autograph. The routines AGSAVE and AGRSTR (which see) should now be used for this purpose. glow-up era, we don't do it the old way anymore. 🎀
🖼️ ´FRAME.´ 🖼️
Simplest form of name: ´FRA.´
An integral real number specifying when a frame advance is to be done by the routines EZY, EZXY, EZMY, and EZMXY and having one of three possible values:
- The value
"1."specifies a frame advance after drawing a graph. - The value
"2."specifies no frame advance at all. - The value
"3."specifies a frame advance before drawing a graph.
Default value: "1." (frame advance after drawing graph).
🎛️ ´SET.´ 🎛️
Simplest form of name: ´SET.´
An integral real number specifying whether or not the arguments of the last call to "SET" are used to determine the linear/log nature of the current graph, the position of the grid window and/or the X/Y minimum/maximum values.
(Note: The routineSETis part of the package called SPPS. Its first four arguments specify a portion of the plotter frame, its next four arguments specify the minimum and maximum X and Y coordinate values to be mapped to that portion, and its ninth argument specifies the linear/log nature of the mapping. The routineGETSET, which is also a part of SPPS, is used to retrieve the arguments of the last call toSET.)
Giving ´SET.´ a value (individually, rather than as part of a group) has both an immediate effect and a delayed effect. The immediate effect, which occurs in the routine AGSETP, is to return most of the parameters in the groups ´GRID.´, ´X.´, and ´Y.´ to their default values. (Exceptions are ´X/LOGARITHMIC.´ and ´Y/LOGARITHMIC.´, which may have values making them immune to such resetting.) The delayed effect, which occurs in the routine AGSTUP, depends on the value given to ´SET.´.
There are eight acceptable values of ´SET.´, four of which are just the negatives of the other four. Using a negated value suppresses the drawing of curves by the routines EZY, EZXY, EZMY, and EZMXY. Acceptable absolute values of ´SET.´ are as follows:
- The value
"1."means that the arguments of the lastSETcall are not to be used byAGSTUP. - The value
"2."means that, inAGSTUP,´X/LOGARITHMIC.´and´Y/LOGARITHMIC.´are to be given values ("0."or"-1.") consistent with the ninth argument of the lastSETcall and that parameters in the group´GRID.´are to be given values consistent with the first four arguments of the lastSETcall. - The value
"3."means that, inAGSTUP,´X/LOGARITHMIC.´and´Y/LOGARITHMIC.´are to be given values ("0."or"-1.") consistent with the ninth argument of the lastSETcall and that the other parameters in the groups´X.´and´Y.´are to be given values consistent with the fifth through eighth arguments of the lastSETcall. - The value
"4."implies a combination of the actions specified by the values"2."and"3.".
Default value: "1." (no arguments of last SET call used).
Special action by AGSETP: As described above, if ´SET.´ is set (individually, rather than as part of a group) to any value by an AGSETP call, the parameters in the groups ´GRID.´, ´X.´, and ´Y.´ are reset to their default values. The parameter ´X/LOGARITHMIC.´ is reset to its default value ("0.") only if it has the value "+1."; a value of "-1." is not changed; ´Y/LOGARITHMIC.´ is treated similarly.
📏 ´ROW.´ 📏
Simplest form of name: ´ROW.´
An integral real number specifying the assumed dimensioning of X and Y coordinate data arrays used in calls to the routines EZMY and EZMXY. There are four possibilities:
- The value
"-2."means that both X and Y arrays are subscripted by curve number and point number, in that order. - The value
"-1."means that Y arrays are subscripted by curve number and point number, in that order, but that X arrays are subscripted by point number only. (The same X-coordinate data is used for all the curves.) - Either of the values
"0."or"1."means that Y arrays are subscripted by point number and curve number, in that order, but that X arrays are subscripted by point number only. (The same X-coordinate data is used for all of the curves.) - The value
"+2."means that both X and Y arrays are subscripted by point number and curve number, in that order.
Default value: "1." (Y by point and curve numbers, X by point number only).
🔄 ´INVERT.´ 🔄
Simplest form of name: ´INV.´
An integral real number having the value "0." or "1."; giving it the value "1." causes the routines AGSTUP and AGCURV to behave as if arguments defining X-coordinate data had been interchanged with arguments defining Y-coordinate data, thus, in some sense, allowing one to graph "X as a function of Y". This parameter is principally intended for users of the routines EZY, EZXY, EZMY, and EZMXY. flip it and reverse it, bestie. 🙈
Default value: "0." (no inversion of X and Y arguments).
🪟 ´WINDOW.´ 🪟
Simplest form of name: ´WIN.´
An integral real number having the value "0." or "1."; giving it the value "1." causes the routine AGCURV to use the subroutine AGQURV, rather than AGKURV, for drawing curves. The result is that curve portions falling outside the grid window are omitted. See the AGCURV man page.
Default value: "0." (no windowing of curves).
🌈 ´BACKGROUND.´ 🌈
Simplest form of name: ´BAC.´
An integral real number specifying the type of background to be drawn by AGBACK. There are four acceptable values:
- The value
"1."specifies a "perimeter" background. - The value
"2."specifies a "grid" background. - The value
"3."specifies a "half-axis" background. - The value
"4."specifies no background at all.
Default value: "1." (a "perimeter" background).
okay so when BACKGROUND. gets set by itself — like, not as part of a whole group situation — through an AGSETP call, the background you asked for gets built by messing with these parameters:
[AXIS/]s/CONTROL.[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]INWARD.[AXIS/]s/[TICKS/]MINOR/[LENGTH/]INWARD.LABEL/CONTROL.
and here "s" is standing in for LEFT, RIGHT, BOTTOM, and TOP 💅 this whole thing is what decides which axes actually get plotted, how long the inward-pointing bits of the major and minor tick marks are gonna be, and whether informational labels show up at all. and the values it uses? bestie, they're giving:
the value "1." (perimeter background) sets:
s/CONTROL.to"4."for all s;s/MAJOR/INWARD.to".015"for all s;s/MINOR/INWARD.to".010"for all s;LABEL/CONTROL.to"2.".
the value "2." (grid background) sets:
s/CONTROL.to"4."for"s"="LEFT"and"BOTTOM",s/CONTROL.to"-1."for"s"="RIGHT"and"TOP";s/MAJOR/INWARD.to"1."for all s;s/MINOR/INWARD.to"1."for all s;LABEL/CONTROL.to"2.".
the value "3." (half-axis background) sets:
s/CONTROL.to"4."for"s"="LEFT"and"BOTTOM",s/CONTROL.to"-1."for"s"="RIGHT"and"TOP";s/MAJOR/INWARD.to".015"for all s;s/MINOR/INWARD.to".010"for all s;LABEL/CONTROL.to"2.".
the value "4." (no background) sets:
s/CONTROL.to"0."for all s;s/MAJOR/INWARD.to `".015 for all s;s/MINOR/INWARD.to".010"for all s;LABEL/CONTROL.to"0.".
so the default values of these thirteen parameters line up exactly with the default value of BACKGROUND.. but lowkey watch out 👀 if you change them directly, the value of BACKGROUND. might not reflect what the background actually is anymore. the vibes will be lying to you.
🌸 NULL. 🌸
Simplest form of name: NUL.
This group is holding the two "nulls" (or "special values", if you wanna be fancy) NULL/1. and NULL/2..
✨ NULL/1. ✨
Simplest form of name: NUL/1.
A real number, "null 1", and Autograph uses it in these ways, no cap:
- Some parameters have it by default, or can just be handed it, and the value
"null 1"is saying the routine AGSTUP should pick values for them. and here's the tea — the value that gets chosen for a given parameter is not back-stored in place of the"null 1". so like, a unique value gets chosen for every single graph drawn 🎀 - If a curve point that the user specified has X and/or Y coordinates equal to
"null 1", that curve point is just... ignored. it's not used in computing minimum and maximum values, and the curve segments on either side of it don't get drawn. ghosted, fr. 💀
Default value: "1.E36" (an arbitrary value).
Special action by AGSETP: If NULL/1. is changed (individually, rather than as part of a group) by an AGSETP call, the entire list of primary parameters gets scanned — any value equal to the old "null 1" is replaced by the new one. whole list, swept. 🧹
💜 NULL/2. 💜
Simplest form of name: NUL/2.
A real number, "null 2". Certain parameters may be given the value "null 2", and that's specifying that the routine AGSTUP is gonna choose values for them. but unlike its sibling, the value chosen for a given parameter is back-stored in place of the "null 2" — so a unique value may get chosen for the first graph of a series and then just... used for all the remaining graphs in the series. iconic behavior, honestly. 👑
Default value: "2.E36" (an arbitrary value).
Special action by AGSETP: If NULL/2. is changed (individually, rather than as part of a group) by an AGSETP call, the entire list of primary parameters gets scanned — any value equal to the old "null 2" is replaced by the new one. yes bestie, same sweep. ✨
🦋 GRAPH. 🦋
Simplest form of name: GRA.
A group of four parameters describing where the "graph window" sits inside the plotter frame. anything Autograph draws (labels included!!) is forced to live entirely inside this window. the subgroups and how many parameters each one has:
GRAPH/LEFT.(1)GRAPH/RIGHT.(1)GRAPH/BOTTOM.(1)GRAPH/TOP.(1)
💖 GRAPH/LEFT. 💖
Simplest form of name: GRA/LE.
A real number between "0." and "1." giving the position of the left edge of the graph window, as a fraction of the distance from the left edge to the right edge of the plotter frame.
Default value: "0." (left edge of plotter frame).
💖 GRAPH/RIGHT. 💖
Simplest form of name: GRA/RI.
A real number between "0." and "1." giving the position of the right edge of the graph window, as a fraction of the distance from the left edge to the right edge of the plotter frame.
Default value: "1." (right edge of plotter frame).
💖 GRAPH/BOTTOM. 💖
Simplest form of name: GRA/BO.
A real number between "0." and "1." giving the position of the bottom edge of the graph window, as a fraction of the distance from the bottom edge to the top edge of the plotter frame.
Default value: "0." (bottom edge of plotter frame).
💖 GRAPH/TOP. 💖
Simplest form of name: GRA/TO.
A real number between "0." and "1." giving the position of the top edge of the graph window, as a fraction of the distance from the bottom edge to the top edge of the plotter frame.
Default value: "0." (top edge of plotter frame).
👀 okay so noticeGRAPH/TOP.defaults to"0."and not"1."— that's literally what the page says, so we're saying it too. no editing the lore.
🌈 GRID. 🌈
Simplest form of name: GRI.
A group of five parameters describing the position and shape of the "grid window" inside the graph window. subgroups and how many parameters each:
GRID/LEFT.(1)GRID/RIGHT.(1)GRID/BOTTOM.(1)GRID/TOP.(1)GRID/SHAPE.(1)
🎀 GRID/LEFT. 🎀
Simplest form of name: GRI/LE.
A real number between "0." and "1." giving the position of the left edge of the area where the grid window is gonna be placed, stated as a fraction of the distance from the left edge to the right edge of the graph window.
Default value: ".15".
🎀 GRID/RIGHT. 🎀
Simplest form of name: GRI/RI.
A real number between "0." and "1." giving the position of the right edge of the area where the grid window is gonna be placed, stated as a fraction of the distance from the left edge to the right edge of the graph window.
Default value: ".95".
🎀 GRID/BOTTOM. 🎀
Simplest form of name: GRI/BO.
A real number between "0." and "1." giving the position of the bottom edge of the area where the grid window is gonna be placed, stated as a fraction of the distance from the bottom edge to the top edge of the graph window.
Default value: ".15".
🎀 GRID/TOP. 🎀
Simplest form of name: GRI/TO.
A real number between "0." and "1." giving the position of the top edge of the area where the grid window is gonna be placed, stated as a fraction of the distance from the bottom edge to the top edge of the graph window.
Default value: ".95".
⭐ GRID/SHAPE. ⭐
Simplest form of name: GRI/SH.
A real number specifying the shape of the grid window. and here's the thing — whatever its shape is, the grid window gets centered in, and made as large as possible in, the area specified by the first four parameters in the group GRID.. the value of GRID/SHAPE. falls into one of four possible ranges, and bestie they are:
- A value less than
"0."specifies the negative of the desired ratio of the grid window's width to its height. like, the value"-2."specifies a grid window that's twice as wide as it is high. slay. 💅 - The value
"0."specifies a grid window with exactly the same shape as the area specified by the first four parameters in the groupGRID.. so the grid window fills that area completely. full send. ✨ - A value
"s"between"0."and"1."specifies a grid window whose shape is determined by the range of the user's coordinate data, reverting to the shape of the area specified by the first four arguments in the groupGRID.if the ratio of the shorter side of the grid window to the longer side of the grid window would thereby be made less than"s". for example, if"s"were given the value".5"and the user X coordinate data ranged in value from"0."to"10."and the user Y coordinate data ranged in value from"0."to"15.", the grid window would be made two-thirds as wide as it was high; however, if the Y coordinate data ranged in value from"0."to"100.", the grid window would not be made one-tenth as wide as it is high, but would instead be made to fill the entire area specified by the first four arguments of the groupGRID.. - A value
"s"greater than or equal to"1."specifies a grid window whose shape is determined by the range of the user's coordinate data, reverting to a square if the ratio of the longer side of the grid window to the shorter side of the grid window would thereby be made greater than"s".
⚠️ okay important note: ifGRID/SHAPE.is given a value greater than"0.", Autograph assumes that the user's X and Y coordinate data have the same units (both in inches, for example) and that the outline of a real two-dimensional object is to be graphed without distortion. the grid window gets shaped in such a way as to accomplish this. 🫶 but do not use this feature when eitherX/LOGARITHMIC.orY/LOGARITHMIC.has a non-zero value — doing so will yield strange results. strange as in cursed, not as in cute. 💀
🌟 also note that either"-1."or"+1."produces a square, and that"-1.61803398874989"produces a golden rectangle. golden ratio moment, we love to see it. 👑
Default value: "0.".
✨ X. ✨
Simplest form of name: X.
okay so this is a lil squad of seven parameters 💖 and together they decide how your X-coordinate data gets mapped onto the horizontal axis of the grid window. here's the subgroup breakdown and how many params live in each:
X/MINIMUM.(1)X/MAXIMUM.(1)X/LOGARITHMIC.(1)X/ORDER.(1)X/NICE.(1)X/SMALLEST.(1)X/LARGEST.(1)
also go check SET. and INVERT., above — they're relevant, trust 🫶
🌸 X/MINIMUM. 🌸
Simplest form of name: X/MI.
A real number that says what the minimum user X coordinate to be considered is. Normally this one is sitting at the value "null 1", which is basically the polite way of telling the routine AGSTUP to go look at the user's X-coordinate data itself and find the minimum value on its own. main character behavior honestly 💅
If you use the value "null 2" instead, it gets replaced — the next time AGSTUP is called — by an actual minimum value that AGSTUP computes.
If you hand it a non-null value, AGSTUP will not go snooping through the user's X-coordinate data; your given value is just taken as the minimum, periodt.
And heads up: if both X/MINIMUM. and X/MAXIMUM. get non-null values, the minimum one should have a lesser value than the maximum one. basic math etiquette bestie 🎀
Default value: "1.E36" ("null 1").
⭐ X/MAXIMUM. ⭐
Simplest form of name: X/MA.
Analogous to X/MINIMUM., above — it specifies the way in which the maximum X coordinate is to be determined.
Default value: "1.E36" ("null 1").
🦋 X/LOGARITHMIC. 🦋
Simplest form of name: X/LO.
An integral real number having one of the values "-1.", "0.", or "+1.":
- The value "0." specifies that the mapping of user X coordinates onto the horizontal axis of the grid window is to be linear.
- The values "-1." and "+1." specify that the mapping is to be logarithmic, in which case all user X-coordinate data must be greater than zero. no zeroes, no negatives, no exceptions 😭
- The value "-1." is immune to change when
SET.(which see, above) is reset; the value "+1." is not.
Default value: "0." (linear X mapping).
🎀 X/ORDER. 🎀
Simplest form of name: X/OR.
An integral real number having one of the values "0." or "1.":
- The value "0." specifies that the values of user X coordinates mapped to the horizontal axis of the grid window should increase from left to right.
- The value "1." specifies that user X coordinates should decrease from left to right.
Default value: "0." (increase from left to right).
💜 X/NICE. 💜
Simplest form of name: X/NI.
An integral real number having one of the values "-1.", "0.", or "+1.":
- The value "-1." specifies that user X-coordinate data are to be mapped onto the horizontal axis of the grid window in such a way as to force major-tick positions at the endpoints of the bottom X axis.
- The value "+1." specifies that user X-coordinate data are to be mapped onto the horizontal axis of the grid window in such a way as to force major-tick positions at the endpoints of the top X axis.
- The value "0." specifies that the X-coordinate data are to be mapped so as to range from the left edge of the grid window to the right edge of the grid window; major-tick positions are not forced at the ends of either X axis.
Default value: "-1." (bottom axis "nice").
🌈 X/SMALLEST. 🌈
Simplest form of name: X/SM.
This parameter comes into play when AGSTUP is called upon to compute the minimum X coordinate (that's when X/MINIMUM. has a null value, bestie); if the value of X/SMALLEST. is non-null, values less than it will not be considered in the computation.
Default value: "1.E36" ("null 1").
✨ X/LARGEST. ✨
Simplest form of name: X/LA.
This parameter comes into play when AGSTUP is called upon to compute the maximum X coordinate (when X/MAXIMUM. has a null value); if the value of X/LARGEST. is non-null, values greater than it will not be considered in the computation.
Default value: "1.E36" ("null 1").
💖 Y. 💖
Simplest form of name: Y.
A group of seven parameters specifying the mapping of the user's Y-coordinate data onto the vertical axis of the grid window. Subgroups and the number of parameters in each are as follows:
Y/MINIMUM.(1)Y/MAXIMUM.(1)Y/LOGARITHMIC.(1)Y/ORDER.(1)Y/NICE.(1)Y/SMALLEST.(1)Y/LARGEST.(1)
See also SET. and INVERT., above.
🌸 Y/MINIMUM. 🌸
Simplest form of name: Y/MI.
Analogous to X/MINIMUM., above; it specifies the way in which the minimum Y coordinate is to be determined.
Default value: "1.E36" ("null 1").
⭐ Y/MAXIMUM. ⭐
Simplest form of name: Y/MA.
Analogous to X/MAXIMUM., above; it specifies the way in which the maximum Y coordinate is to be determined.
Default value: "1.E36" ("null 1").
🦋 Y/LOGARITHMIC. 🦋
Simplest form of name: Y/LO.
Analogous to X/LOGARITHMIC., above; it specifies whether the mapping of Y coordinates is linear or logarithmic.
Default value: "0." (linear Y).
🎀 Y/ORDER. 🎀
Simplest form of name: Y/OR.
Analogous to X/ORDER., above; it specifies whether Y-coordinates increase or decrease from bottom to top.
Default value: "0." (increase from bottom to top).
💜 Y/NICE. 💜
Simplest form of name: Y/NI.
Analogous to X/NICE., above; it specifies whether the left Y axis, the right Y axis, or neither, is to be "nice".
Default value: "-1." (left axis "nice").
🌈 Y/SMALLEST. 🌈
Simplest form of name: Y/SM.
Analogous to X/SMALLEST., above; comes into play when AGSTUP is called upon to compute the minimum Y coordinate.
Default value: "1.E36" ("null 1").
✨ Y/LARGEST. ✨
Simplest form of name: Y/LA.
Analogous to X/LARGEST., above; comes into play when AGSTUP is called upon to compute the maximum Y coordinate.
Default value: "1.E36" ("null 1").
👑 AXIS. 👑
Simplest form of name: AXI.
A group of 92 parameters describing four axes: the left axis, the right axis, the bottom axis, and the top axis. Subgroups and the number of parameters in each are as follows:
[AXIS/]LEFT.(23)[AXIS/]RIGHT.(23)[AXIS/]BOTTOM.(23)[AXIS/]TOP.(23)
and here's the gag: the elements of the subgroups are interleaved in the group. meaning the first elements of the four subgroups make up elements 1 through 4 of the group, the second elements of the four subgroups make up elements 5 through 8 of the group, and so on and so on. it's giving braided hair 🎀
🫶 [AXIS/]s. 🫶
(where "s" means "any one of the keywords LEFT, RIGHT, BOTTOM, or TOP".)
Simplest form of name: s.
A group of 23 parameters describing the axis specified by "s". Subgroups and the number of parameters in each are as follows:
[AXIS/]s/CONTROL.(1)[AXIS/]s/LINE.(1)[AXIS/]s/INTERSECTION.(2)[AXIS/]s/FUNCTION.(1)[AXIS/]s/TICKS.(10)[AXIS/]s/NUMERIC.(8)
💅 [AXIS/]s/CONTROL. 💅
Simplest form of name: s/CO.
An integral real number having one of the values "-1.", "0.", "1.", "2.", "3.", or "4." and controlling certain aspects of the drawing of the axis specified by "s", like so:
- The value "-1." specifies that only the line portion of the axis may be drawn; tick marks and numeric labels are suppressed. silent. mysterious. 💀
- The value "0." specifies that no portion of the axis may be drawn.
- A positive value specifies that all portions of the axis may be drawn and specifies what actions Autograph may take to prevent numeric-label overlap problems, as follows:
- The value "1." specifies that numeric labels may not be shrunk or rotated.
- The value "2." specifies that numeric labels may be shrunk, but not rotated.
- The value "3." specifies that numeric labels may be rotated, but not shrunk.
- The value "4." specifies that numeric labels may be both shrunk and/or rotated.
Default value: "4." for all "s" (all axes drawn, numeric labels may be shrunk and/or rotated).
🌸 [AXIS/]s/LINE. 🌸
Simplest form of name: s/LI.
An integral real number having one of the values "0." or "1.":
- The value "0." specifies that the line portion of the axis specified by "s" may be drawn.
- The value "1." suppresses the line portion of the axis specified by "s".
Default value: "0." for all "s" (line portions of all axes may be drawn).
🦋 [AXIS/]s/INTERSECTION. 🦋
Simplest form of name: s/IN.
A group of two parameters:
[AXIS/]s/INTERSECTION/GRID.[AXIS/]s/INTERSECTION/USER.
each having the default value "1.E36" ("null 1"). Giving either of them a non-null value causes the axis specified by "s" to be moved away from its normal position on one edge of the grid window. If both are given non-null values, .../USER. takes precedence over .../GRID..
If the left Y axis or the right Y axis is moved, it remains vertical, but intersects the bottom of the grid window at a specified X coordinate. Similarly, if the bottom X axis or the top X axis is moved, it remains horizontal, but intersects the left edge of the grid at a specified Y coordinate.
No axis may be moved outside the current graph window; if an attempt is made to do so, the axis is moved as far as the edge and no farther.
💅 [AXIS/]s/INTERSECTION/GRID.
Simplest form of name: s/IN/GR.
A real number that — as long as it isn't equal to the current "null 1" — specifies, in the grid coordinate system, the X coordinate (when "s" = "LEFT" or "RIGHT") or the Y coordinate (when "s" = "BOTTOM" or "TOP") of the point where the axis specified by "s" intersects the perpendicular sides of the grid window.
Default value: 1.E36 ("null 1") for all "s" (the axes lie right on the edges of the grid window, bestie).
✨ [AXIS/]s/INTERSECTION/USER.
Simplest form of name: s/IN/US.
A real number that — again, only if it's not equal to the current "null 1" — specifies, in the user coordinate system, the X coordinate (when "s" = "LEFT" or "RIGHT") or the Y coordinate (when "s" = "BOTTOM" or "TOP") of the point where the axis specified by "s" intersects the perpendicular sides of the grid window.
Default value: 1.E36 ("null 1") for all "s" (axes on the edges of the grid window, periodt).
🦋 [AXIS/]s/FUNCTION.
Simplest form of name: s/FU.
A real number, passed as an argument to the subroutine AGUTOL. That subroutine defines the user-system-to-label-system mappings — aka the label coordinate systems — for all the axes. The default version of AGUTOL defines the identity mapping for every axis, and a user version can be swapped in to define literally any set of mappings you want. The intent is that AXIS/s/FUNCTION. gets used inside a user version of AGUTOL as a function selector. It's also recommended that the value 0. select the identity mapping, so you have a way to recreate the default situation. 🫶
Tick marks on the axis specified by "s" are positioned in the label coordinate system. Numeric labels on that axis give values in the label coordinate system.
See the AGUTOL man page.
Default value: 0. for all "s" (identity mapping for all axes).
🎀 [AXIS/]s/TICKS.
Simplest form of name: s/TI.
A group of ten parameters describing the tick marks, if any, that are gonna be part of the axis specified by "s". Subgroups and how many parameters live in each:
[AXIS/]s/[TICKS/]MAJOR.(6)[AXIS/]s/[TICKS/]MINOR.(4)
⭐ [AXIS/]s/[TICKS/]MAJOR.
Simplest form of name: s/MA.
A group of six parameters describing the major tick marks, if any, that are gonna be part of the axis specified by "s". Subgroups and their parameter counts:
[AXIS/]s/[TICKS/]MAJOR/SPACING.(3)[AXIS/]s/[TICKS/]MAJOR/PATTERN.(1)[AXIS/]s/[TICKS/]MAJOR/LENGTH.(2)
🌸 [AXIS/]s/[TICKS/]MAJOR/SPACING.
Simplest form of name: s/MA/SP.
A group of three parameters describing how major tick marks, if any, get spaced along the axis specified by "s". Subgroups and their counts:
[AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.(1)[AXIS/]s/[TICKS/]MAJOR/[SPACING/]BASE.(1)[AXIS/]s/[TICKS/]MAJOR/[SPACING/]COUNT.(1)
💜 [AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.
Simplest form of name: s/MA/TY.
A real number specifying where major tick marks get placed along the axis specified by "s" — i.e. at what values in the label coordinate system along that axis. Let "b" be the value of the parameter .../BASE. (described right after this one) and let "k" be an arbitrary integer. There are six acceptable values of .../TYPE.:
- The value
0.specifies that no major tick marks are to be drawn on the axis. - The value
1.specifies major tick marks at values of the form plus or minus b times k. - The value
2.specifies major tick marks at values of the form plus or minus b times 10 to the power k. - The value
3.specifies major tick marks at values of the form plus or minus b to the power k. - The value
"null 1"specifies that Autograph should use a value1.,2., or3.— whichever it considers best. 👑 - The value
"null 2"specifies that Autograph should use a value1.,2., or3.— whichever it considers best — and replace the"null 2"with that value.
Notice: major tick marks on a linear axis may be spaced logarithmically, and major tick marks on a logarithmic axis may be spaced linearly. Sometimes that's useful, iykyk.
Default value: 1.E36 ("null 1") for all "s" (Autograph spaces major tick marks as it sees fit).
🍓 [AXIS/]s/[TICKS/]MAJOR/[SPACING/]BASE.
Simplest form of name: s/MA/BA.
A real number which, if it's greater than zero and non-null, specifies the base value ("b", from the previous parameter description) used when spacing major tick marks in the label coordinate system along the axis specified by "s". A negative or zero value suppresses major tick marks on the axis. A null value makes Autograph pick an appropriate base value and, if the null was a "null 2", backstore that value in place of the "null 2".
Default value: 1.E36 ("null 1") for all "s" (Autograph picks the base values).
🧚 [AXIS/]s/[TICKS/]MAJOR/[SPACING/]COUNT.
Simplest form of name: s/MA/CO.
A real number with an integral value "n" greater than or equal to 0. A negative value is treated as if it were a zero. The value n is only used when major tick marks are to be spaced linearly and the base value ("b", from the preceding parameter descriptions) is to be chosen by Autograph. In that case, n is a rough estimate of the minimum number of major tick marks to be placed on the axis specified by "s". The actual number used may vary between "n+2" and "5n/2+4" (approximately).
Default value: 6. for all "s" (somewhere between 8 and 19 major tick marks per linear axis).
🔥 [AXIS/]s/[TICKS/]MAJOR/PATTERN.
Simplest form of name: s/MA/PA.
A real number specifying the dashed-line pattern to be used for major tick marks on the axis specified by "s". Normally, its integer equivalent is a 16-bit integer where "0" bits specify "pen-up" segments (gaps) 3 plotter units long and "1" bits specify "pen-down" segments (solids) 3 plotter units long. The value 0. turns the major tick marks off; the value 65535. (decimal) = 177777. (octal) makes them solid lines. If the value "null 1" is used, the next call to AGSTUP resets it to 65535. (decimal).
Default value: 1.E36 ("null 1") for all "s" (solid-line patterns).
💖 [AXIS/]s/[TICKS/]MAJOR/LENGTH.
Simplest form of name: s/MA/LE.
A group of two parameters determining the length of the outward-pointing and inward-pointing portions of the major tick marks on the axis specified by "s". Subgroups and their counts:
[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]OUTWARD.(1)[AXIS/]s/[TICKS/]MAJOR/[LENGTH/]INWARD.(1)
🌈 [AXIS/]s/[TICKS/]MAJOR/[LENGTH/]OUTWARD.
Simplest form of name: s/MA/OU.
A real number specifying the length of the outward-pointing portion of each major tick mark on the axis specified by "s". The value must be of the form "e", "1.+e", or "-e", where "e" is greater than or equal to 0. and less than 1. and represents a fraction of the smaller dimension of the grid window.
Note:"Outward"is defined relative to the normal position of the axis"s", even when that axis has been moved away from its normal position.
- When a value
"e"is used, each major tick mark extends outward"e"units from the axis. - When a value
"1.+e"is used, each major tick mark extends outward to the farther edge of the grid window and then"e"units beyond that edge. (If the axis is not moved away from its normal position,"1.+e"has the same effect as"e".) - When a value
"-e"is used, the first"e"units of the inward-pointing portion of each major tick mark are erased. (This can be used to create off-axis major tick marks — for whatever that may be worth. 💀)
Default value: 0. for all "s" (all major ticks point inward).
🎀 [AXIS/]s/[TICKS/]MAJOR/[LENGTH/]INWARD.
Simplest form of name: s/MA/IN.
A real number specifying the length of the inward-pointing portion of each tick mark on the axis specified by "s". The value must be of the form "e", "1.+e", or "-e", where e is greater than or equal to 0. and less than 1. and represents a fraction of the smaller dimension of the grid window.
Note:"Inward"is defined relative to the normal position of the axis"s", even when that axis has been moved away from its normal position.
- When a value
"e"is used, each major tick mark extends inward"e"units from the axis. - When a value
"1.+e"is used, each major tick mark extends inward to the farther edge of the grid window and then"e"units beyond that edge. This feature is used to create grid backgrounds. - When a value
"-e"is used, the first"e"units of the outward-pointing portion of each major tick mark are erased.
Default value: .015 for all "s" (all major ticks point inward).
🦋 [AXIS/]s/[TICKS/]MINOR.
Simplest form of name: s/MI.
A group of four parameters describing the minor tick marks, if any, that are gonna be part of the axis specified by "s". Subgroups and their counts:
[AXIS/]s/[TICKS/]MINOR/SPACING.(1)[AXIS/]s/[TICKS/]MINOR/PATTERN.(1)[AXIS/]s/[TICKS/]MINOR/LENGTH.(2)
💅 [AXIS/]s/[TICKS/]MINOR/SPACING. 💅
Simplest form: s/MI/SP.
Bestie, this is a real number that sets how many minor tick marks you want squeezed between each pair of major tick marks on the axis s. Here's the tea on what values are valid:
- If it's less than
1., minor ticks are completely suppressed (no minors, periodt). - If it's greater than or equal to
1.and not null, it should be an integer — it directly says how many minor ticks you get. - The values
null 1andnull 2mean Autograph picks a reasonable integer for you. If you saynull 2, it gets replaced by whatever integer Autograph chose.
The minor ticks, if there are any, are spaced linearly in the label coordinate system along the axis s. Big brain note: for a usual logarithmic axis, the move is 8. — that puts minor ticks between major ticks at label-system values 10**n and 10**n+1 at the label-system values 2*10**n, 3*10**n, 4*10**n, . . ., 9*10**n.
Default: 1.E36 (null 1) for all s (Autograph picks appropriate values). 👑
🎀 [AXIS/]s/[TICKS/]MINOR/PATTERN. 🎀
Simplest form: s/MI/PA.
A real number for the dashed-line pattern used for minor tick marks on axis s — just like [AXIS/]s/[TICKS/]MAJOR/PATTERN. above, but for the little guys.
Default: 1.E36 (null 1) for all s (solid-line patterns). ✨
🌸 [AXIS/]s/[TICKS/]MINOR/LENGTH. 🌸
Simplest form: s/MI/LE.
A group of two parameters that set the length of the outward-pointing and inward-pointing parts of the minor tick marks on axis s. The subgroups and how many parameters each has:
[AXIS/]s/[TICKS/]MINOR/[LENGTH/]OUTWARD.(1)[AXIS/]s/[TICKS/]MINOR/[LENGTH/]INWARD.(1)
🦋 [AXIS/]s/[TICKS/]MINOR/[LENGTH/]OUTWARD. 🦋
Simplest form: s/MI/OU.
A real number for the length of the outward-pointing part of each minor tick mark on axis s; just like ...MAJOR/[LENGTH/]OUTWARD. above.
Default: 0. for all s (all minor ticks point inward). 💖
🌈 [AXIS/]s/[TICKS/]MINOR/[LENGTH/]INWARD. 🌈
Simplest form: s/MI/IN.
A real number for the length of the inward-pointing part of each minor tick mark on axis s; just like ...MAJOR/[LENGTH/]INWARD. above.
Default: .010 for all s (all minor ticks point inward). ✨
💜 [AXIS/]s/NUMERIC. 💜
Simplest form: s/NU.
A group of eight parameters that describe the numeric labels (if any) that are part of axis s. The subgroups and parameter counts:
[AXIS/]s/[NUMERIC/]TYPE.(1)[AXIS/]s/[NUMERIC/]EXPONENT.(1)[AXIS/]s/[NUMERIC/]FRACTION.(1)[AXIS/]s/[NUMERIC/]ANGLE.(2)[AXIS/]s/[NUMERIC/]OFFSET.(1)[AXIS/]s/[NUMERIC/]WIDTH.(2)
👑 [AXIS/]s/[NUMERIC/]TYPE. 👑
Simplest form: s/TY.
These three parameters:
[AXIS/]s/[NUMERIC/]TYPE.[AXIS/]s/[NUMERIC/]EXPONENT.[AXIS/]s/[NUMERIC/]FRACTION.
are described together because they're super interdependent. They set the type of numeric labels used (at major-tick positions) on axis s. A fourth parameter:
[AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.
(described above) also affects the type of numeric labels. In this chat, I'll use short forms: s/ TYPE., s/EXPO., s/FRAC., and s/MAJOR/TYPE. respectively.
All four default to null 1 (except the first, which defaults to 0. for s = RIGHT and TOP), leaving Autograph free to choose values consistent with each other and with other parameters for axis s. Any one or more can be set to null 2 (then an actual value chosen by Autograph is backstored over the null 2) or an actual integral real value.
Setting s/TYPE. to 0.:
This turns off numeric labels on axis s. The other three parameters are then ignored.
Setting s/TYPE. to 1.:
This selects "scientific" notation. Each numeric label looks like:
[-] [i] [.] [f] x 10 e
where brackets mean those parts can be independently present or absent, and e is a superscript exponent.
s/EXPO. sets the length of i (number of characters), which also sets the value of exponent e. If s/EXPO. is less than or equal to zero, i is omitted. If s/EXPO. is less than zero and has integral absolute value n, the fraction f is forced to have n leading zeroes.
s/FRAC. sets the length of f (number of characters). If s/FRAC. is less than or equal to zero, f is omitted. If s/FRAC. is less than zero, the decimal point is omitted.
If [i] [.] [f] has the value 1., the first part of the label is omitted, leaving only 10 e.
If the entire label has the value 0., the single character 0 is used.
The value of s/MAJOR/TYPE. is immaterial.
Setting s/TYPE. to 2.:
This selects "exponential" notation. The exact vibe depends on s/MAJOR/TYPE., like so:
- If
s/MAJOR/TYPE.is1.(all major ticks at values of the form plus or minusbtimesk), each numeric label is written as:
[-] [i] [.] [f] x 10 e
where brackets mean those parts can be independently present or absent, and e is a superscript exponent.
s/EXPO. sets the integral value of exponent e.
s/FRAC. sets the length of f (number of characters). If s/FRAC. is less than or equal to zero, f is omitted. If s/FRAC. is less than zero, the decimal point is omitted.
If the label value is exactly zero, the single character 0 is used.
- If
s/MAJOR/TYPE.is2.(all major ticks at values of the form plus or minusbtimes10to the powerk), each numeric label is written as:
[-] [i] [.] [f] x 10 e
where brackets mean those parts can be independently present or absent, and e is a superscript exponent.
s/EXPO. sets the integral value of exponent e when k equals 0. The value of e is s/EXPO. plus k.
s/FRAC. sets the length of f (number of characters). If s/FRAC. is less than or equal to zero, f is omitted. If s/FRAC. is less than zero, the decimal point is omitted.
If the label value is exactly zero, the single character 0 is used.
- If
s/MAJOR/TYPE.is3.(all major ticks at values of the form plus or minusbto the powerk), each numeric label is written as:
[-] [i] [.] [f] e
where brackets mean those parts can be independently present or absent, and e is a superscript exponent.
s/EXPO. is ignored. The value of e is k.
s/FRAC. sets the length of f (number of characters). If s/FRAC. is less than or equal to zero, f is omitted. If s/FRAC. is less than zero, the decimal point is omitted.
Note that [i] [.] [f] expresses the value of b.
Setting s/TYPE. to 3.:
This selects "no-exponent" notation. The exact vibe depends on s/MAJOR/TYPE., like so:
- If
s/MAJOR/TYPE.is1.(all major ticks at values of the form plus or minusbtimesk), each numeric label is written as:
[-] [i] [.] [f]
where brackets mean those parts can be independently present or absent.
s/EXPO. is ignored.
s/FRAC. sets the length of f (number of characters). If s/FRAC. is less than or equal to zero, f is omitted. If s/FRAC. is less than zero, the decimal point is omitted.
If the label value is exactly zero, the single character 0 is used.
- If
s/MAJOR/TYPE.is2.(all major ticks at values of the form plus or minusbtimes10to the powerk), each numeric label is written as:
[-] [i] [.] [f]
where brackets mean those parts can be independently present or absent.
s/EXPO. is ignored.
The length of f (number of characters) is specified by the function:
MAX(s/FRAC.,0) - k
if this quantity is greater than zero, and
MIN(s/FRAC.,0)
otherwise. This may look kinda extra, but it gives a simple, desirable result. For example, if s/FRAC. = 1., b = 3.6, and k ranges from -3 to +3, the labels produced are
Okay so the list keeps going: .0036, .036, .36, 3.6, 36., 360., and 3600.
The parameter s/FRAC. can be seen as saying how long "f" is when "k" is zero. If the function value is less than or equal to zero, then "f" is omitted—like, not invited to the party. If it's less than zero, the decimal point is also omitted.
- If
s/MAJOR/TYPE.has the value"3."(all major ticks at values of the form plus or minus b to the power k), each numeric label is written in the form
[-] [i] [.] [f]
if "k" is greater than or equal to zero, and in the form
[-] 1/ [i] [.] [f]
if "k" is less than zero. Brackets enclose portions which may be independently present or absent.
The parameter s/EXPO. is ignored. Like, completely ignored, bestie.
The length of "f" (the number of characters) is specified by the function
s/FRAC. * ABS(k)
if "k" is non-zero, or
MIN(s/FRAC.,0)
if "k" is zero. Again, this function produces a simple result. Suppose that s/FRAC. = "1.", "b" = "1.1", and "k" ranges from "-3" to "+3"; the labels produced are
1/1.331, 1/1.21, 1/1.1, 1., 1.1, 1.21, and 1.331
The parameter s/FRAC. may be viewed as specifying the length of "f" when "k" is equal to 1. If the function value is less than or equal to zero, "f" is omitted; if it is less than zero, the decimal point is omitted.
Another example: Suppose s/FRAC. = "-1.", "b" = "2.", and "k" ranges from "-4" to "+4"; the labels produced are
1/16, 1/8, 1/4, 1/2, 1, 2, 4, 8, and 16
Default value: "1.E36" ("null 1") for all three for all "s" (Autograph chooses values to use), except for
RIGHT/[NUMERIC/]TYPE. and
TOP/[NUMERIC/]TYPE.,
which are zeroed to suppress the numeric labels on the right and top axes.
✨ [AXIS/]s/[NUMERIC/]EXPONENT. ✨
Simplest form of name: s/EX.
See the discussion of [AXIS/]s/[NUMERIC/]TYPE., above.
🌸 [AXIS/]s/[NUMERIC/]FRACTION. 🌸
Simplest form of name: s/FR.
See the discussion of [AXIS/]s/[NUMERIC/]TYPE., above.
🦋 [AXIS/]s/[NUMERIC/]ANGLE. 🦋
Simplest form of name: s/AN.
A group of two integral real numbers specifying the orientation angle of numeric labels on the axis specified by "s". Subgroups and the number of parameters in each are as follows:
[AXIS/]s/[NUMERIC/]ANGLE/1ST.(1)[AXIS/]s/[NUMERIC/]ANGLE/2ND.(1)
💅 [AXIS/]s/[NUMERIC/]ANGLE/1ST. 💅
Simplest form of name: s/AN/1S.
An integral real number having one of the values "0.", "90.", "180.", or "270." (plus or minus a small multiple of "360."), specifying the user's first choice for the orientation angle of numeric labels on the axis specified by "s". The value is stated in degrees counter-clockwise from a left-to-right horizontal vector.
The routine AGSTUP decides whether the first choice or the second choice is to be used. The second choice is used only when the first choice leads to overlap problems and the current value of [AXIS/]s/CONTROL. is a "3." or a "4." and the second choice works out better than the first. If AGSTUP decides to use the first choice, it leaves the first-choice parameter with a positive value; if it decides to use the second choice, it leaves the first-choice parameter with a negative value. Values are made positive or negative by adding and subtracting multiples of "360.".
Default value: "0." for all "s" (horizontal labels preferred on all axes).
🌈 [AXIS/]s/[NUMERIC/]ANGLE/2ND. 🌈
Simplest form of name: s/AN/2N.
An integral real number having one of the values "0.", "90.", "180.", or "270." (plus or minus a small multiple of "360."), specifying the user's second choice for the orientation angle of numeric labels on the axis specified by "s". The value is stated in degrees counter-clockwise from a left-to-right horizontal vector. See the description of the preceding parameter.
Default value: "90." for all "s" (vertical labels, readable from the right, on all axes).
🎀 [AXIS/]s/[NUMERIC/]OFFSET. 🎀
Simplest form of name: s/OF.
A real number specifying the desired position of numeric labels relative to the axis specified by "s".
If the value is positive, numeric labels are to be placed toward the outside of the grid. If the value is negative, numeric labels are to be placed toward the inside of the grid. In either of these two cases, the magnitude of the value specifies the distance from the line portion of the axis to the nearest part of any numeric label, stated as a fraction of the smaller dimension of the grid window. Note: "Inside" and "outside" are defined relative to the normal position of the axis "s", even when that axis has been moved away from its normal position.
If the value is exactly zero, each numeric label is centered on the axis. In this case, the line portion of the axis is suppressed and major and minor tick marks are moved outward so as not to overlap the numeric labels.
Default value: ".015" for all "s" (all labels outside the grid).
🧚 [AXIS/]s/[NUMERIC/]WIDTH. 🧚
Simplest form of name: s/WI.
A group of two real parameters specifying the widths of characters to be used in numeric labels on the axis specified by "s". Subgroups and the number of parameters in each are as follows:
[AXIS/]s/[NUMERIC/]WIDTH/MANTISSA.(1)[AXIS/]s/[NUMERIC/]WIDTH/EXPONENT.(1)
💖 [AXIS/]s/[NUMERIC/]WIDTH/MANTISSA. 💖
Simplest form of name: s/WI/MA.
A real number specifying the width of characters to be used in the "mantissa" of each numeric label on the axis specified by "s", expressed as a fraction of the smaller dimension of the grid window.
Default value: ".015" for all "s".
💜 [AXIS/]s/[NUMERIC/]WIDTH/EXPONENT. 💜
Simplest form of name: s/WI/EX.
A real number specifying the width of characters to be used in the exponent of each numeric label on the axis specified by "s", expressed as a fraction of the smaller dimension of the grid window.
Default value: ".010" for all "s".
🍓 DASH. 🍓
Simplest form of name: DAS.
A group of thirty parameters, the first of which determines what dashed-line patterns are to be used by the routines EZMY and EZMXY and the rest of which describe the "user" set of dashed-line patterns (as opposed to the "alphabetic" set, which is defined by code in the subroutine AGCURV and is not subject to change by the user). Subgroups and the number of parameters in each are as follows:
DASH/SELECTOR.(1)DASH/LENGTH.(1)DASH/CHARACTER.(1)DASH/DOLLAR-QUOTE.(1)DASH/PATTERNS.(26)
⭐ DASH/SELECTOR. ⭐
Simplest form of name: DAS/SE.
The parameter DASH/SELECTOR. is given a negative integral value to specify that the routines EZMY and EZMXY should use the "alphabetic" set of 26 dashed-line patterns for the curves they draw and a positive integral value "n", less than or equal to 26, to specify that EZMY and EZMXY should use the first "n" patterns in the "user" set of dashed-line patterns, as defined by the current values of the remaining parameters in the group DASH..
Each of the patterns in the "alphabetic" set specifies a solid line interrupted periodically by a letter of the alphabet. Each of the patterns in the "user" set is as defined by the user. The default "user" set produces all solid lines.
The routines EZY and EZXY, which draw but one curve per call, always use the first of the patterns in the "user" set; they are unaffected by the value of DASH/SELECTOR..
The selected pattern set is used in a circular fashion. For example, if DASH/SELECTOR. has the value "3." and EZMY is used to draw nine curves, pattern 1 is used for curves 1, 4, and 7, pattern 2 for curves 2, 5, and 8, and pattern 3 for curves 3, 6, and 9.
Default value: "+1." (The first element of the "user" set of dashed-line patterns is to be used by EZMY and EZMXY.)
🌟 DASH/LENGTH. 🌟
Simplest form of name: DAS/LE.
An integral real number specifying how long character-string dashed-line patterns are expected to be. In a user call to ANOTAT with a positive fifth argument (implying that the sixth argument is an array of character-string dashed-line patterns) or in a user call to AGSETC setting DASH/PATTERN/n. (in which case the second argument is such a pattern), the specified character strings must be of the length specified by the current value of DASH/LENGTH..
Default value: "8." (dashed-line patterns are expected to be eight characters long).
🎨 DASH/CHARACTER. 🎨
Simplest form of name: DAS/CH.
A real number specifying the width of each character (other than a dollar sign or a quote) which is drawn along a curve as directed by a character-string dashed-line pattern (whether from the "alphabetic" set or from the "user" set). This width is expressed as a fraction of the smaller dimension of the grid window.
Default value: ".010"
💎 DASH/DOLLAR-QUOTE. 💎
Simplest form of name: DAS/DO.
A real number specifying the line length corresponding to a dollar sign (solid) or a quote (gap) in a character-string dashed-line pattern, expressed as a fraction of the smaller dimension of the grid window.
Default value: ".010"
🔥 DASH/PATTERNS. 🔥
Simplest form of name: DAS/PA.
okay so this is a whole squad of 26 parameters that define the "user" set of dashed-line patterns 💅✨. The subgroups and how many params each one has? It's giving:
´DASH/PATTERNS/1.´ (1)
´DASH/PATTERNS/2.´ (1)
.
.
.
´DASH/PATTERNS/26.´ (1)
DASH/PATTERNS/n. 🌈
Simplest form of name: DAS/PA/n.
(The symbol "n" represents an integer between "1" and "26", inclusive, bestie 🫶.) An integral real number defining the "n"th dashed-line pattern in the "user" set.
If the value is positive, it must be between "0." and "65535.", inclusive, and is interpreted as a 16-bit binary pattern in which each "0" bit specifies a "pen-up" gap segment 3 plotter units long and each "1" bit specifies a "pen-down" solid segment 3 plotter units long 🔥. Such a pattern may be defined by a user call to AGSETF, AGSETI, or AGSETR.
If the value is negative, it serves as an identifier, allowing Autograph to retrieve, from its character storage space, a character string in which each single quote specifies a "pen-up" gap segment, each dollar sign specifies a "pen-down" solid segment, and each other character is simply to be drawn as a part of the line 🌸. Such a pattern may be defined by a user call to AGSETC.
Note that the function AGDSHN allows a user to easily generate the name of the "n"th dash pattern. iconic tbh 👑
Default values: "65535." for all "n" (solid lines) 💖.
LABEL. 🎀
Simplest form of name: LAB.
A group of 3+10n parameters, where "n" is the current value of LABEL/BUFFER/LENGTH. (8, by default) describing up to "n" informational labels ✨. These labels are a part of the background drawn by a call to the routine AGBACK. Subgroups and the number of parameters in each are as follows:
´LABEL/CONTROL.´ (1)
´LABEL/BUFFER/LENGTH.´ (1)
´LABEL/BUFFER/CONTENTS.´ (10n)
´LABEL/NAME.´ (1)
LABEL/CONTROL. 🦋
Simplest form of name: LAB/CO.
An integral real number having the value "0.", "1.", or "2." 😌. Values greater than "2." are changed to a "2." by the next AGSTUP call. Values less than "0." are changed to a "0." by the next AGSTUP call; negative values have a special use, however (see below) 👀.
- The value "0." disables the drawing of informational labels. They remain defined, however.
- The value "1." enables the drawing of informational labels and specifies that they may not be shrunk in response to overlap problems.
- The value "2." enables the drawing of informational labels and specifies that they may be shrunk in response to overlap problems.
Default value: "2." (labels enabled, shrinkable) 💜.
Special action by AGSETP: An AGSETP call which sets this parameter (individually, rather than as part of a group) to a negative value results in the deletion of all currently defined labels 🫣. Note that the negative value is changed to a zero by the next AGSTUP call; thus, the drawing of informational labels is disabled until re-enabled by the user 😭.
LABEL/BUFFER. 🍓
Simplest form of name: LAB/BU.
A group of 1+10n parameters, where "n" is the current value of LABEL/BUFFER/LENGTH. (8, by default) 🌟. Subgroups and the number of parameters in each are as follows:
´LABEL/BUFFER/LENGTH.´ (1)
´LABEL/BUFFER/CONTENTS.´ (10n)
LABEL/BUFFER/LENGTH. 🧚
Simplest form of name: LAB/BU/LE.
An integral real number specifying the number of 10-word label definitions the label buffer will hold 📦. A user program may need to retrieve, but must not set, the value of this parameter, since its value must match the second dimension of the label buffer 😤.
Increasing the size of the label buffer requires modifying the Autograph source code. no cap 💀.
Default value: "8.".
LABEL/BUFFER/CONTENTS. 💅
Simplest form of name: LAB/BU/CO.
This parameter group may be thought of as an array FLLB, dimensioned 10 x n, containing up to n 10-word label definitions 👑. For a second subscript j,
FLLB(1,j)is either a real "0.", saying that no label is defined by this 10-word block, or it is non-zero, in which case it identifies a character string in Autograph´s character-string storage area; the character string serves as a name for the label defined by this 10-word block 🌈. WhenFLLB(1,j)is non-zero:FLLB(2,j)is either a "0.", to enable drawing of the label, or a "1.", to disable drawing of the label,FLLB(3,j)andFLLB(4,j)are the X and Y coordinates of the label´s "basepoint", in the grid coordinate system 📍,FLLB(5,j)andFLLB(6,j)are the X and Y components of the label´s "offset vector", stated as signed fractions of the smaller dimension of the grid window,FLLB(7,j)is an integral real number "0.", "90.", "180.", or "270.", specifying the angle at which the label´s "baseline" emanates from the end of its offset vector 📐,FLLB(8,j)is an integral real number specifying how the lines of the label are to be positioned relative to the end of the offset vector ("-1." to line up the left ends, "0." to line up the centers, or "+1." to line up the right ends),FLLB(9,j)is an integral real count of the number of lines belonging to the label, andFLLB(10,j)is an integral real pointer specifying the second subscript (in the line buffer) of the first line of the label (the one having the largest line number), or, if no lines belong to the label, a "0.".
It is not recommended that a user program change the contents of this buffer directly 🙅♀️. Label definitions should be accessed indirectly by means of the parameters LABEL/NAME. and LABEL/[DEFINITION/]... ✨.
Default values: The label buffer contains four pre-defined labels, corresponding to the four edges of the grid window 🌸. They are as follows:
Label name: ´L´ ´R´ ´B´
Suppression flag: 0. 0. 0.
Basepoint X: 0. 1. .5
Basepoint Y: .5 .5 0.
Offset X: -.015 +.015 0.
Offset Y: 0. 0. -.015
Baseline angle: 90. 90. 0.
Centering option: 0. 0. 0.
Line count: 1. 1. 1.
First-line index: 1. 2. 3.
The description of LINE/BUFFER/CONTENTS., below, gives the default values for the definitions of the lines which belong to these labels 👇.
LABEL/BUFFER/NAMES. 🎀
Simplest form of name: LAB/BU/NA.
This group is a subset of the previous one. It provides a way of retrieving the names of all currently-defined labels 🏷️.
LABEL/NAME. ⭐
Simplest form of name: LAB/NA.
An integral real pointer which, if non-zero, specifies a particular label in the label buffer - the one which is to be referenced by the parameter group LABEL/DEFINITION. (which see, below) 🔍.
Setting LABEL/NAME. is the required first step in accessing a particular label definition 💯.
Default value: "0." (undefined).
Special action by AGSETP: To access the definition of a particular label, one must first call AGSETC with LABEL/NAME. as the first argument and the name of the label one wishes to access as the second argument 🫶. This causes AGSETP (which is called by AGSETC) to search for the definition of the desired label in the label buffer. If that definition is not found, a new one is made up and inserted in the label buffer. In either case, LABEL/NAME. is given a real value whose integer equivalent specifies the second subscript of the label definition in the label buffer ✨.
The definition of a new label has the name specified by the user, a suppression flag "0.", a basepoint (.5,.5), an offset vector (0.,0.), a baseline angle "0.", a centering option "0.", a line count "0.", and a first-line index "0." 🦋.
LABEL/DEFINITION. 💖
Simplest form of name: LAB/DE.
A set of nine parameters defining the label specified by the current value of LABEL/NAME. 😌. If LABEL/NAME. has the value "0.", referencing this group or a parameter in it causes an error exit 💀. Subgroups and the number of parameters in each are as follows:
´LABEL/[DEFINITION/]SUPPRESSION.´ (1)
´LABEL/[DEFINITION/]BASEPOINT.´ (2)
´LABEL/[DEFINITION/]OFFSET.´ (2)
´LABEL/[DEFINITION/]ANGLE.´ (1)
´LABEL/[DEFINITION/]CENTERING.´ (1)
´LABEL/[DEFINITION/]LINES.´ (1)
´LABEL/[DEFINITION/]INDEX.´ (1)
LABEL/[DEFINITION/]SUPPRESSION. 🔥
Simplest form of name: LAB/SU.
An integral real "suppression flag" having the value "0." or "1." and specifying whether drawing of the label specified by LABEL/NAME. is enabled ("0.") or disabled ("1.") 🫣.
Default value for a new label: "0." (label enabled).
Special action by AGSETP: If a user program attempts to set this parameter (individually, rather than as part of a group) to a negative value, the lines of the label specified by LABEL/NAME. are deleted and LINE/NUMBER. is zeroed 😭. If the negative value is less than "-1.", the label is deleted as well and LABEL/NAME. is zeroed. (Deleting a label means that its name cell is set to "0.".) periodt 💅.
LABEL/[DEFINITION/]BASEPOINT. 🌸
Simplest form of name: LAB/BA.
okay so bestie, this is a set of two parameters that specify the X and Y coordinates of the basepoint of the label you named with ´LABEL/NAME.´, all in the grid coordinate system. The label is positioned relative to this basepoint. The subgroups and how many parameters each one has are:
´LABEL/[DEFINITION/]BASEPOINT/X.´(1)´LABEL/[DEFINITION/]BASEPOINT/Y.´(1)
✨ ´LABEL/[DEFINITION/]BASEPOINT/X.´ ✨
Simplest form of name: LAB/BA/X.
The X coordinate of the basepoint of the label specified by ´LABEL/NAME.´. The value "0." refers to the left edge of the grid window, and the value "1." refers to the right edge of the grid window. periodt 💅
Default value for a new label: ".5" (centered). 💖
✨ ´LABEL/[DEFINITION/]BASEPOINT/Y.´ ✨
Simplest form of name: LAB/BA/Y.
The Y coordinate of the basepoint of the label specified by ´LABEL/NAME.´. The value "0." refers to the bottom edge of the grid window, and the value "1." refers to the top edge of the grid window. lowkey essential for placing your label vertically.
Default value for a new label: ".5" (centered). 🦋
✨ ´LABEL/[DEFINITION/]OFFSET.´ ✨
Simplest form of name: LAB/OF.
A set of two parameters specifying the X and Y components of the offset vector of the label specified by ´LABEL/NAME.´, as signed fractions of the smaller dimension of the grid window. The offset vector has its basepoint at the label basepoint. The subgroups and how many parameters each one has are:
´LABEL/[DEFINITION/]OFFSET/X.´(1)´LABEL/[DEFINITION/]OFFSET/Y.´(1)
✨ ´LABEL/[DEFINITION/]OFFSET/X.´ ✨
Simplest form of name: LAB/OF/X.
The X component of the offset vector of the label specified by ´LABEL/NAME.´ — negative toward the left edge, positive toward the right edge, of the grid window. The magnitude represents a fraction of the smaller dimension of the grid window. it's giving precise control, bestie.
Default value for a new label: "0." (zero-length vector). 🎀
✨ ´LABEL/[DEFINITION/]OFFSET/Y.´ ✨
Simplest form of name: LAB/OF/Y.
The Y component of the offset vector of the label specified by ´LABEL/NAME.´ — negative toward the bottom edge, positive toward the top edge, of the grid window. The magnitude represents a fraction of the smaller dimension of the grid window. no cap, this is how you slide your label up and down.
Default value for a new label: "0." (zero-length vector). 🌸
✨ ´LABEL/[DEFINITION/]ANGLE.´ ✨
Simplest form of name: LAB/AN.
An integral real number having one of the values "0.", "90.", "180.", or "270.", and specifying the direction in which the baseline of the label specified by ´LABEL/NAME.´ emanates from the end of its offset vector, measured counter-clockwise from a left-to-right horizontal vector. All the lines of a label are written parallel to its baseline and in the direction of the baseline. the way that this rotates your whole label? iconic.
Default value for a new label: "0." (horizontal, left to right). 👑
✨ ´LABEL/[DEFINITION/]CENTERING.´ ✨
Simplest form of name: LAB/CE.
An integral real number specifying the alignment of the lines of the label specified by ´LABEL/NAME.´ with the end of its offset vector. A negative value aligns the left ends, a zero value the centers, and a positive value the right ends, of the lines. main character energy for your text alignment.
Default value for a new label: "0." (centers aligned). 💅
✨ ´LABEL/[DEFINITION/]LINES.´ ✨
Simplest form of name: LAB/LI.
An integral real number specifying the number of lines in the label specified by ´LABEL/NAME.´. not me setting this manually — it's updated by Autograph as lines are added to or deleted from the label and should not be set by a user program. fr fr, don't touch it.
Default value for a new label: "0." (no lines). 🙈
✨ ´LABEL/[DEFINITION/]INDEX.´ ✨
Simplest form of name: LAB/IN.
An integral real number specifying the second subscript (in the line buffer) of the first line belonging to the label specified by ´LABEL/NAME.´ — a zero if no line belongs to the label. ngl, this one is also updated by Autograph as lines are added to or deleted from the label and should not be set by a user program.
Default value for a new label: "0." (no lines). 🍓
✨ ´LINE.´ ✨
Simplest form of name: LIN.
A group of 4+6n parameters, where "n" is the current value of ´LINE/BUFFER/LENGTH.´ (16, by default) describing up to "n" lines, each of which is a part of some informational label. The subgroups and how many parameters each one has are:
´LINE/MAXIMUM.´(1)´LINE/END.´(1)´LINE/BUFFER/LENGTH.´(1)´LINE/BUFFER/CONTENTS.´(6n)´LINE/NUMBER.´(1)
✨ ´LINE/MAXIMUM.´ ✨
Simplest form of name: LIN/MA.
An integral real number specifying the assumed maximum length of a character string delivered to Autograph for use as the text of a label line. Such a character string may occur as the first argument of a call to ANOTAT (defining the text of line "100." in the label ´L´), as the second argument of a call to ANOTAT (defining the text of line "-100." in the label ´B´), as the last argument of a call to one of the routines EZY, EZXY, EZMY, or EZMXY (defining the text of line "100." in the label ´T´), or as the second argument of a call to AGSETC whose first argument is
´LINE/[DEFINITION/]TEXT.´
(defining the text of any line). In each of these cases, the character string must be of the length specified by ´LINE/MAXIMUM.´ or shorter. If it is shorter, its last character must be the character specified by ´LINE/END.´, described below. iykyk
This parameter may be given any desired non-negative integral value.
Default value: "40.". ⭐
✨ ´LINE/END.´ ✨
Simplest form of name: LIN/EN.
A character string whose first character is the one used to mark the end of a character string defining the text of a label line (in calls to ANOTAT, EZY, EZXY, EZMY, EZMXY, and AGSETC), when that character string is shorter than the current maximum specified by ´LINE/MAXIMUM.´ (as described above). the way that this terminator gets stripped off? It does not become a part of the text of the line. It is stripped off, so that only the preceding characters constitute the text of the line.
Default value: "´$´". 💀
✨ ´LINE/BUFFER.´ ✨
Simplest form of name: LIN/BU.
A group of 1+6n parameters, where "n" is the current value of ´LINE/BUFFER/LENGTH.´ (16, by default). The subgroups and how many parameters each one has are:
´LINE/BUFFER/LENGTH.´(1)´LINE/BUFFER/CONTENTS.´(6n)
✨ ´LINE/BUFFER/LENGTH.´ ✨
Simplest form of name: LIN/BU/LE.
An integral real number specifying the number of 6-word line definitions the line buffer will hold. A user program may need to retrieve, but must not set, the value of this parameter, since its value must match the second dimension of the line buffer. lowkey important: increasing the size of the line buffer requires modifying the Autograph source code.
Default value: "16.". 🧚
✨ ´LINE/BUFFER/CONTENTS.´ ✨
Simplest form of name: LIN/BU/CO.
This group may be thought of as an array FLLN, dimensioned 6 x n, containing up to n 6-word line definitions. For a second subscript j,
- FLLN(1,j) is either a real "null 1", saying that no label line is defined by this 6-word block, or an integral real "line number", saying that it does define a label line, in which case:
- FLLN(2,j) is either
"0.", to enable drawing of the line, or"1.", to disable drawing of the line. - FLLN(3,j) is the real width of each character of the line, stated as a fraction of the smaller dimension of the grid window.
- FLLN(4,j) is an integral real number serving as the identifier of the character string defining the text of the line and enabling it to be retrieved from Autograph's internal character storage space.
- FLLN(5,j) is an integral real count of the number of characters in the text of the line.
- FLLN(6,j) is an integral real number specifying the second subscript (in the line buffer) of the next line of the label to which this line belongs (that one of the remaining lines in the chain with the largest line number) or, if there is no next line, a
"0.".
It is not recommended that a user program change the contents of this buffer directly. Line definitions should be accessed indirectly by means of the parameters ´LINE/NUMBER.´ and ´LINE/[DEFINITION/]...´. periodt 💅
Default values: The line buffer contains four pre-defined lines, each of which belongs to one of the four pre-defined labels. They are as follows:
Label name ´L´ ´R´ ´B´ ´T´
Line number +100. -100. -100. +100.
Suppression flag 0. 0. 0. 0.
Character width .015 .015 .015 .020
Text pointed to ´Y´ ´ ´ (a blank) ´X´ ´ ´ (a blank)
Text length 1. 0. 1. 0.
Next-line index 0. 0. 0. 0.
The description of ´LABEL/BUFFER/CONTENTS.´, above, gives default values for the definitions of the four labels which contain these lines. slay 🌈
✨ ´LINE/NUMBER.´ ✨
Simplest form of name: LIN/NU.
An integral real pointer which, if non-zero, specifies a particular line in the line buffer — the one which is to be referenced by the parameter group ´LINE/DEFINITION.´ (which see, below). the way that setting this parameter is the required first step in accessing a particular line definition.
Default value: "0." (undefined). 💜
okay so real talk, bestie — here's how AGSETP does its little magic trick 💫
Special action by AGSETP: to get at the definition of one specific line of one specific label, you gotta make sure LABEL/NAME. is set (that one's up above, go peek 👀). Then you call AGSETI with LINE/NUMBER. as the first argument and the number of the line you wanna access as the second argument. That makes AGSETP (which AGSETI calls, obvs) go dig through the line buffer looking for the definition of a line that belongs to the label named by the current value of LABEL/NAME. and that has the line number you asked for. If it can't find one, it just makes a new one, drops it in the line buffer, and links it into the right spot in the chain of lines belonging to that label. Either way, LINE/NUMBER. gets an integral real value that tells you the second subscript of that line definition in the line buffer. ✨
So a brand-new line's definition comes out looking like: the number the user gave it, a suppression flag of "0.", a character width of ".015", a pointer to the text string `"´ ´ (a single blank)"` — wait, no, the text string is a single blank, and a text length of "1.". 🎀
Note: the "line numbers" are what you use to identify the lines of a label and to say where they sit relative to each other and to the label's baseline. Positive line numbers draw above the label baseline, zero line numbers draw right along the label baseline, and negative line numbers draw below the label baseline. A line with a bigger line number than another line gets drawn above that line. ("Above" and "below" here are from the POV of someone actually reading the label, iykyk.) And the magnitudes of the line numbers do not affect inter-line spacing at all — Autograph itself decides that. no cap. 💅
💖 LINE/DEFINITION. 💖
Simplest form of name: LIN/DE.
A little squad of five parameters that define the line specified by LINE/NUMBER.. If LINE/NUMBER. has the value "0.", then referencing any parameter in this group causes an error exit 😭 — like, it just bails.
Subgroups and how many parameters live in each:
LINE/[DEFINITION/]SUPPRESSION.(1)LINE/[DEFINITION/]CHARACTER.(1)LINE/[DEFINITION/]TEXT.(1)LINE/[DEFINITION/]LENGTH.(1)LINE/[DEFINITION/]INDEX.(1)
🌸 LINE/[DEFINITION/]SUPPRESSION. 🌸
Simplest form of name: LIN/SU.
An integral real number that's either "0." or "1.", and it says whether drawing the line specified by LINE/NUMBER. is enabled ("0.") or disabled ("1.").
Default value for a new line: "0." (so, line enabled, we're drawing it 💅).
Special action by AGSETP: if a user program tries to set this parameter (on its own, not as part of a group) to a negative value, then the line specified by LINE/NUMBER. gets deleted and LINE/NUMBER. is reset to "0.". (Deleting a line means it's unlinked from the chain of lines belonging to its label, and its number cell is set to "null 1".) 💀
🦋 LINE/[DEFINITION/]CHARACTER. 🦋
Simplest form of name: LIN/CH.
A real number giving the width you want for each character of the line specified by LINE/NUMBER., expressed as a fraction of the smaller dimension of the grid window.
Default value for a new line: ".015".
🎀 LINE/[DEFINITION/]TEXT. 🎀
Simplest form of name: LIN/TE.
An integral real number that acts as an identifier for a character string stashed away in Autograph's internal character storage space. 🫶
Default value for a new line: "´ ´ (a single blank)".
Special action by AGSETP: when you set this parameter via a call to AGSETC, the character string you pass as AGSETC's second argument gets stored in a character storage array inside Autograph, an identifier gets generated so you can retrieve that string later, and the value of that identifier gets stored (by AGSETP, which AGSETC calls) as the parameter value. Right at that moment, the length of the string gets figured out and LINE/[DEFINITION/]LENGTH. gets set. See LINE/MAXIMUM. and LINE/TERMINATOR., above. ⭐
🌈 LINE/[DEFINITION/]LENGTH. 🌈
Simplest form of name: LIN/LE.
An integral real count of how many characters are in the text of the line specified by LINE/NUMBER.. Setting this parameter less than or equal to zero suppresses the drawing of the line. Also see the description of LINE/[DEFINITION/]TEXT., above. 🙈
Default value for a new line: "1." (one character — a blank).
👑 LINE/[DEFINITION/]INDEX. 👑
Simplest form of name: LIN/IN.
An integral real number giving the second subscript (in the line buffer) of the next line of the label — or a zero if there is no next line.
Autograph updates this parameter itself as lines get added to or deleted from the label, and a user program should not set it. hands off, bestie. 🚫
💜 SECONDARY. 💜
Simplest form of name: SEC.
A group of 149 "secondary" control parameters. These are not normally set by a user program — Autograph computes them itself (the routine AGSTUP). Their values may be useful in some applications though. Subgroups and how many parameters are in each:
SECONDARY/GRAPH.(4)SECONDARY/USER.(4)SECONDARY/CURVE.(4)SECONDARY/DIMENSIONS.(3)SECONDARY/AXIS.(80)SECONDARY/LABEL.(54)
⭐ SECONDARY/GRAPH. ⭐
Simplest form of name: SEC/GR.
A group of four real numbers giving the X coordinates of the left and right edges of the graph window and the Y coordinates of the bottom and top edges of the graph window, all in the grid coordinate system. Autograph uses these to decide whether a point whose coordinates are in the grid coordinate system lands inside or outside the graph window. 🔍
If the parameters in the group GRID. have their default values (".15", ".95", ".15", ".95", and "0."), these four parameters get the values "-.1875", "1.0625", "-.1875", and "1.0625". And bestie, notice: -.1875 = (0.-.15)/(.95-.15) and 1.0625 = (1.-.15)/(.95-.15). math ate that fr fr 🧮✨
💫 SECONDARY/USER. 💫
Simplest form of name: SEC/US.
A set of four real numbers giving the X coordinates of the left and right edges of the grid window and the Y coordinates of the bottom and top edges of the grid window, in the user coordinate system. These get used when mapping user curve points into the grid window. The routines AGSTUP, AGBACK, and AGCURV use these four numbers as arguments 5 through 8 in calls to the system-plot-package routine SET.
🌸 SECONDARY/CURVE. 🌸
Simplest form of name: SEC/CU.
A group of four real numbers giving the X coordinates of the left and right edges of the grid (curve) window and the Y coordinates of the bottom and top edges of the grid (curve) window. The X coordinates are stated as fractions of the distance from left to right, and the Y coordinates as fractions of the distance from bottom to top, in the plotter frame. The routines AGSTUP, AGBACK, and AGCURV use these four numbers as arguments 1 through 4 in calls to the system-plot-package routine SET. If the parameters in the groups GRAPH. and GRID. have their default values, these four parameters get the values ".15", ".95", ".15", and ".95". 🦋
🍓 SECONDARY/DIMENSIONS. 🍓
Simplest form of name: SEC/DI.
A group of three real numbers — the first two give the width and height of the grid window, and the third is equal to the smaller of those two. Each one is stated as a number of plotter units. If the parameters in the groups GRAPH. and GRID. have their default values and the plotter being used has 1024x1024 addressable positions, then each of these three parameters gets the value 818.4 = (.95-.15) * 1023. 🔥
🎀 SECONDARY/AXIS. 🎀
Simplest form of name: SEC/AX.
A group of eighty parameters that have to do with drawing the four axes. Subgroups and how many parameters are in each:
SECONDARY/[AXIS/]LEFT.(20)SECONDARY/[AXIS/]RIGHT.(20)SECONDARY/[AXIS/]BOTTOM.(20)SECONDARY/[AXIS/]TOP.(20)
And here's the twist 👀 — the parameters from those subgroups are interleaved in the group. Meaning: the first elements of the subgroups make up elements 1 through 4 of the group, the second elements of the subgroups make up elements 5 through 8 of the group, and so on. so chaotic but so iconic.
🫶 SECONDARY/[AXIS/]s. 🫶
Simplest form of name: SEC/s.
A group of twenty parameters having to do with drawing the axis specified by "s", where "s" is one of the keywords "LEFT", "RIGHT", "BOTTOM", or "TOP". Subgroups and how many parameters are in each:
SECONDARY/[AXIS/]s/POSITION.(6)SECONDARY/[AXIS/]s/TICKS.(3)SECONDARY/[AXIS/]s/NUMERIC.(11)
🌈 SECONDARY/[AXIS/]s/POSITION. 🌈
Simplest form of name: SEC/s/PO.
A group of six real numbers — the first three describe a point at the beginning of axis "s", and the last three describe a point at the end of axis "s". The first two numbers of each triplet are the X and Y coordinates of the point, in the grid coordinate system. The third number of each triplet is a user-system X or Y coordinate of the point (an X coordinate for a horizontal axis, a Y coordinate for a vertical axis). 💅
✨ SECONDARY/[AXIS/]s/TICKS. ✨
Simplest form of name: SEC/s/TI.
A group of three real numbers, giving the values Autograph has chosen to use for the primary parameters
´[AXIS/]s/[TICKS/]MAJOR/[SPACING/]TYPE.´
´[AXIS/]s/[TICKS/]MAJOR/[SPACING/]BASE.´
´[AXIS/]s/[TICKS/]MINOR/SPACING.´
which is, like, the most extra way to say "here's the tick spacing, babe" 💖
... (which see, above, bestie, keep scrolling 💅). These secondary parameters are literally just little storage lockers — they hold the values that Autograph picked for the matching primary parameters, so that the primary parameters' "null 1" values don't get disturbed. Respect the null, fr fr.
SECONDARY/[AXIS/]s/NUMERIC.
Simplest form of the name: SEC/s/NU.
It's a whole squad of eleven real numbers, and they're all about generating the numeric labels on the axis you picked with "s". Let's break down the group chat:
The first three of them hold the values Autograph chose to use for the primary parameters
[AXIS/]s/[NUMERIC/]TYPE.
[AXIS/]s/[NUMERIC/]EXPONENT.
[AXIS/]s/[NUMERIC/]FRACTION.
(which see, above ✨). Same deal as before — these secondary parameters exist so the primary parameters' "null 1" values stay untouched. Iconic behavior, honestly.
The fourth parameter is an integral real count of how many characters are in the longest numeric-label mantissa on the axis "s".
The fifth parameter is an integral real count of how many characters are in the longest numeric-label exponent on the axis "s".
The sixth parameter is the necessary multiplicative "reduction factor" (a number between 0. and 1.) that gets applied to the sizes of the numeric labels on the axis "s" so they fit without overlap drama. Shrink to fit, slay.
The seventh, eighth, ninth, and tenth parameters are real numbers specifying the width of the space the numeric labels need: to the left (outward), to the right (inward), at the beginning, and at the end of the axis "s" — and each one is stated as a fraction of the width or height of the grid window, depending on which way the axis "s" is oriented.
The eleventh parameter tells you whether the axis "s" is linear or log. That's the vibe check.
SECONDARY/LABEL.
Simplest form of the name: SEC/LA.
This is a group of fifty-four parameters describing the six "label boxes" 👑. Each box is a little mechanism for moving and/or shrinking a particular group of labels, all in an attempt to keep any label in that group from overlapping an axis or escaping outside the current graph window. No label left behind, periodt.
The subgroups and how many parameters each one holds:
SECONDARY/LABEL/LEFT. (9)
SECONDARY/LABEL/RIGHT. (9)
SECONDARY/LABEL/BOTTOM. (9)
SECONDARY/LABEL/TOP. (9)
SECONDARY/LABEL/CENTER. (9)
SECONDARY/LABEL/GRAPH. (9)
And here's the little plot twist: the parameters of the subgroups are interleaved in the group. The first elements of the subgroups make up elements 1 through 6 of the group, the second elements of the subgroups make up elements 7 through 12, and so on. It's giving braided friendship bracelets 🎀.
SECONDARY/LABEL/b.
Simplest form of the name: SEC/LA/b.
where the keyword "b" tells you which label box we're talking about, like this:
- If "b" =
LEFT, label box 1 is specified. It holds all labels that have a basepoint on the left edge of the grid window and a leftward-pointing offset vector. These labels get moved leftward as needed to avoid overlapping any numeric labels on either Y axis. - If "b" =
RIGHT, label box 2 is specified. It holds all labels that have a basepoint on the right edge of the grid window and a rightward-pointing offset vector. These labels get moved rightward as needed to avoid overlapping any numeric labels on either Y axis. - If "b" =
BOTTOM, label box 3 is specified. It holds all labels that have a basepoint on the bottom edge of the grid window and a downward-pointing offset vector. These labels get moved downward as needed to avoid overlapping any numeric labels on either X axis. - If "b" =
TOP, label box 4 is specified. It holds all labels that have a basepoint on the top edge of the grid window and an upward-pointing offset vector. These labels get moved upward as needed to avoid overlapping any numeric labels on either X axis. - If "b" =
CENTER, label box 5 is specified. It holds all labels that have a basepoint on some edge of the grid window and an inward-pointing offset vector. These labels get moved inward as needed to avoid overlapping numeric labels on any axis. - If "b" =
GRAPH, label box 6 is specified. It holds all labels that aren't specifically assigned to one of the other boxes. These labels don't get moved, but they can still get shrunk as needed to keep them from running outside the grid window.
Okay so, timeline moment ⏳. Before a call to AGSTUP, the nine parameters in this group are undefined. After an AGSTUP call but before an AGBACK call, they have what the docs call "interim" values. After an AGBACK call, they have what the docs call "final" values. Character development, honestly.
The first parameter in the group is a "reduction factor" for the widths of the characters in the labels in box "b". This one is a little chaotic, so listen up:
- It may have the interim value
0., which means no actual value has been computed yet. - It may have the interim value
1., which means the user has prohibited shrinkage of the labels in box "b" (by givingLABEL/CONTROL.the value1.). - Its final value may be
-1., which means minimum-sized labels were used, but even those led to overlap problems 😭. - Or its final value may be somewhere between
0.and1., which means that's the actual reduction factor that got applied when the labels were drawn.
The next four parameters in the group specify the grid-system X coordinates of the left and right edges, plus the grid-system Y coordinates of the bottom and top edges, of label box "b". The interim values describe the box the labels must be made to fit in to dodge overlap; the final values describe the box the labels actually got made to fit in.
The last four parameters in the group specify the grid-system X coordinates of the left and right edges, plus the grid-system Y coordinates of the bottom and top edges, of label box "b" as it would be if all the labels were reduced to minimum size. The interim values describe an unmoved box; the final values describe a (possibly) moved box. Glow-up arc complete 💖.
👀 SEE ALSO 👀
- Online:
agdshn,aggetc,aggetf,aggeti,aggetp,aggetr,agrstr,agsave,agsetc,agsetf,agseti,agsetp,agsetr,anotat,displa - Hardcopy:
NCAR Graphics Fundamentals, UNIX Version
💜 COPYRIGHT 💜
Copyright (C) 1987-2009 University Corporation for Atmospheric Research
The use of this Software is governed by a License Agreement.
okay bestie that's a wrap on the whole page 🎀 this one came from the NCAR Graphics crew, dated March 1993, and it's filed as Autograph_params(3NCARG) — go forth and annotate, you absolute icon 👑✨
📦 where this page comes from
- epel 9: ncl-devel 6.6.2-59.el9 · LicenseRef-Callaway-BSD
- fedora 43: ncl-devel 6.6.2-58.fc43 · LicenseRef-Callaway-BSD
- fedora 44: ncl-devel 6.6.2-62.fc44 · LicenseRef-Callaway-BSD
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms