round

Appendix A — The geometry in SWF — Gradient Fills

It is possible in SWF to use gradient fills. The gradient definitions are pretty raw and require you to draw large objects (that you can scale down later if you wish). A radial fill will usually be used to draw a round corner or a big & smooth dot. A linear fill can be used to draw objects which go from one color to another. The linear fill goes from left to right by default. It can be rotation as required though. Yet, in either case what is drawn in the shape object needs to be at the right scale and in the right direction. This may not always prove easy to deal with!

SWF Structure Info
Tag Flash Version:
3
SWF Structure:
```struct swf_gradient_record {
if(f_tag == DefineMorphShape || f_tag == DefineMorphShape2) {
unsigned char	f_position;
swf_rgba	f_rgba;
unsigned char	f_position_morph;
swf_rgba	f_rgba_morph;
}
else if(f_tag == DefineShape3 || f_tag == DefineShape4) {
unsigned char	f_position;
swf_rgba	f_rgba;
}
else {
unsigned char	f_position;
swf_rgb		f_rgb;
}
};```

The first record position should be 0 and the last 255. The intermediate should use the corresponding value depending on their position in the gradient effect.

SWF Line Style (swf_line_style)

SWF Structure Info
Tag Flash Version:
1
SWF Structure:
```struct swf_line_style {
if(f_tag == DefineMorphShape) {
unsigned short twips	f_width;
unsigned short twips	f_width_morph;
swf_rgba		f_rgba;
swf_rgba		f_rgba_morph;
}
else if(f_tag == DefineShape4 || f_tag == DefineMorphShape2) {
unsigned short twips	f_width;
if(f_tag == DefineMorphShape2) {
unsigned short twips	f_width_morph;
}
unsigned		f_start_cap_style : 2;
unsigned		f_join_style : 2;
unsigned		f_has_fill : 1;
unsigned		f_no_hscale : 1;
unsigned		f_no_vscale : 1;
unsigned		f_pixel_hinting : 1;
unsigned		f_reserved : 5;
unsigned		f_no_close : 1;
unsigned		f_end_cap_style : 2;
if(f_join_style == 2) {
unsigned short fixed	f_miter_limit_factor;
}
if(f_has_fill) {
swf_fill_style		f_fill_style;
}
else {
swf_rgba		f_rgba;
if(f_tag == DefineMorphShape2) {
swf_rgba		f_rgba_morph;
}
}
}
else if(f_tag == DefineShape3) {
unsigned short twips	f_width;
swf_rgba		f_rgba;
}
else {
unsigned short twips	f_width;
swf_rgb				f_rgb;
}
};```

The width of the line is in TWIPS (1/20th of a pixel).

The f_start_cap_style and f_end_cap_style can be:

• 0 - Round cap,
• 1 - No cap,
• 2 - Square cap.

Round is the default, the way line caps looked before version 8. No Cap means that nothing is added at the tip of the line. This means the line stops exactly where you say it should end. The Square Cap is like the No Cap, but it has the cap which is about Width / 2.

The f_join_style can be:

Turn Watcher 1.2 is out!

Made to Order Software Corporation is proud to announce the 1.2 release of Turn Watcher, an Initiative and Effects Tracker...and more!

Version 1.2 now supports spell and other effect tracking. A optional new window appears at the bottom of the main window that allows you to add, edit and remove effects for the currently highlighted combatant. When an effect expires on the current combatant's turn, you are alerted and asked if you wish to delete the expired effect.

You may also add effects to multiple characters at once by highlighting them, then clicking the "A" button. ...

Creating Turn Watcher — An Adventure Unto Itself

I think I'm like just about everyone else. I have the work 'me' and the play 'me'. Only difference is, the two once merged, and what was born was Turn Watcher.

I have played in D&D campaigns for many years, but never thought of running my own campaign until I got a very unusual present for my 40th birthday — the Dungeon Master's Guide. I started reading the book and was hooked. How fun I thought it would be to create encounters and intriguing situations and worlds for my players. It wasn't until I ran my first game that I realized that it would take more ...