Microsoft KB Archive/110609

From BetaArchive Wiki
Knowledge Base


How to Use STYLE Clause for @ ... GETs in FoxBASE+/Mac

PSS ID Number: 110609

Article Last Modified on 10/23/1999



The information in this article applies to:

  • Microsoft FoxBASE+ for Macintosh 2.01



This article was previously published under Q110609

SUMMARY

The @ ... GET command has an optional STYLE clause, which provides a method for determining certain characteristics of objects to be displayed to an output device. Specifically, the STYLE clause is used to specify the pen pattern, pen width, fill pattern, radius, and transfer mode of an object. When a screen is generated, the STYLE clause is automatically calculated for all the objects created for the screen.

When you are porting a format file created in FoxBASE+ for MS-DOS to the Macintosh, it may be more feasible to modify the existing format file to give it a Macintosh "look and feel", as opposed to starting from scratch with the FoxBASE+/Mac Screen Builder. If you decide to modify the format file, you will need to understand how the STYLE clause is calculated. The calculation of this clause is explained below.

MORE INFORMATION

The value contained in the STYLE clause affects five different object settings:

Pen pattern - The shade of a line or box outline.
Pen width - The width of a line or box outline.
Fill pattern - The shade used to fill box objects.
Radius - The amount of curvature in rounded rectangles.
Transfer mode - How the current object blends when placed on top of existing objects.


Each setting can have 1 of 16 possible values, with a range of 0 to 15. In general, the values are such that the lower numbers correspond to less (for example, lighter, thinner, and less curved), and the higher numbers correspond to more (for example, darker, thicker, and more curved). All possible values for each of the five settings are listed in pages 3-8 through 3-10 of the FoxBASE+/Mac "Commands & Functions" manual.

To calculate the STYLE clause, do the following:

  1. Choose a value between 0 and 15 for each of the five settings.
  2. Perform the following calculations:

    1. Multiply your pen width value by 16.
    2. Multiply your fill pattern value by 256.
    3. Multiply your radius value by 4096.
    4. Multiply your transfer mode value by 65536.
  3. Sum together the pen pattern with the newly calculated values for pen width, fill pattern, radius, and transfer mode. The result is the value of the STYLE clause needed to create the desired effect for your object.

The following program demonstrates how the STYLE clause is calculated. The formula used to calculate the STYLE clause is shown in the CALCSTYLE procedure at the end of this code example.

*Set up the environment.
   SCREEN 1 TOP
   SET TALK OFF
   filename = SYS(16)
   SET PROCEDURE to "&filename"
   CLEAR
   STORE 0 TO penpat, penwidth, fillpat, radius, xmode

   *Create a plain rectangle with a dark border.
   penpat = 15                 && 1 is lightest, 15 is darkest
   penwidth = 1                && 1 is thinnest, 12 is thickest
   styleval = calcstyle(penpat, penwidth, fillpat, radius, xmode)
   @ 2,2 TO 4,8 STYLE styleval
   WAIT "Press any key for a thicker outline..."

   *Make the border thicker.
   CLEAR
   penwidth = 6                && make the outline 6 pixels wide
   styleval = calcstyle(penpat, penwidth, fillpat, radius, xmode)
   @ 2,2 TO 4,8 STYLE styleval
   WAIT "Press any key for a gray fill..."

   *Give the box a medium fill.
   CLEAR
   fillpat = 6                 && 1 is white, 15 is black
   styleval = calcstyle(penpat, penwidth, fillpat, radius, xmode)
   @ 2,2 TO 4,8 STYLE styleval
   WAIT "Press any key for rounded corners..."

   *Round the corners.
   CLEAR
   radius = 12                 && 0 is no rounding, 15 is an oval
   styleval = calcstyle(penpat, penwidth, fillpat, radius, xmode)
   @ 2,2 TO 4,8 STYLE styleval
   WAIT "Press any key for some color..."

   *Add a COLOR clause for a red foreground and a blue background.
   CLEAR
   styleval = calcstyle(penpat, penwidth, fillpat, radius, xmode)
   @ 2,2 TO 4,8 STYLE styleval COLOR "r/b"
   WAIT "Press any key to end this program..."

   *Clean up before closing
   CLEAR ALL
   CLOSE ALL
   CLEAR
   SET PROCEDURE TO

   *Here is the procedure that calculates the STYLE clause
   PROCEDURE calcstyle
   PARAMETERS penpat, penwidth, fillpat, radius, xmode

   newpwid = penwidth * 16     && multiply by 16 to the power of 1
   newfpat = fillpat * 256     && multiply by 16 to the power of 2
   newrad = radius * 4096      && multiply by 16 to the power of 3
   newxmode = xmode * 65536    && multiply by 16 to the power of 4

   *Sum all the values together
   newstyle = penpat + newpwid + newfpat + newrad + newxmode

   RETURN newstyle             && return the new result
                

REFERENCES

"Commands & Functions" pages 3-7 through 3-11


Additional query words: 2.10 hard code

Keywords: KB110609
Technology: kbAudDeveloper kbFoxBASE201Mac kbFoxBASESearch kbFoxproSearch kbHWMAC kbOSMAC