# 3D

## Introduction

Most software companies run in that dilemma. In order to write software that works, you want to write some tests. The question for many of these companies is: what kind of tests are most efficient for my business?

Here we talk about seven common test practices in the software industry.

## 1. Unit Testing

Probably the most used form of testing is Unit Testing. This is easy to write and very effective in discovering bugs. If you are looking at verifying correctness, this is 100% what you need to have to test your software.

### Why is it easy to write?

In most cases, Unit ...

## Appendix A — The geometry in SWF

This appendix describes different aspects of the geometry in Flash. Note that some of the description uses 3D matrices. It is rather easy to simplify them and use just and only 2D matrices. The simplifications can usually be such that only 2 or 3 operations are required to get the proper coordinates used to render objects.

Remember that Flash uses TWIPs and thus you certainly will want to use floating points to make it easy on you.

## SWF Any Filter (swf_any_filter)

SWF Structure Info
Tag Flash Version:
8
SWF Structure:
```/* the filter type */
struct swf_filter_type {
unsigned char	f_type;
};

struct swf_filter_glow {
swf_filter_type	f_type;		/* 0, 2, 3, 4 or 7 */
if(f_type == GradientGlow || f_type == GradientBevel) {
unsigned char		f_count;
}
else {
f_count = 1;
}
swf_rgba		f_rgba[f_count];
if(f_type == Bevel) {
swf_rgba		f_highlight_rgba[f_count];
}
if(f_type == GradientGlow || f_type == GradientBevel) {
unsigned char		f_position[f_count];
}
signed long fixed	f_blur_horizontal;
signed long fixed	f_blur_vertical;
if(f_type != Glow) {
signed long fixed	f_radian_angle;
signed long fixed	f_distance;
}
signed short fixed	f_strength;
unsigned		f_inner_shadow : 1;
unsigned		f_knock_out : 1;
unsigned		f_composite_source : 1;
if(f_type == Bevel) {
unsigned		f_on_top : 1;
}
else {
unsigned		f_reserved : 1;
}
if(f_type == GradientGlow || f_type == GradientBevel) {
unsigned		f_passes : 4;
}
else {
unsigned		f_reserved : 4;
}
};

struct swf_filter_blur {
swf_filter_type		f_type;	/* 1 */
unsigned long fixed	f_blur_horizontal;
unsigned long fixed	f_blur_vertical;
unsigned		f_passes : 5;
unsigned		f_reserved : 3;
};

struct swf_filter_convolution {
swf_filter_type	f_type;		/* 5 */
unsigned char	f_columns;
unsigned char	f_rows;
long float	f_divisor;
long float	f_bias;
long float	f_weights[f_columns × f_rows];
swf_rgba	f_default_color;
unsigned	f_reserved : 6;
unsigned	f_clamp : 1;
unsigned	f_preserve_alpha : 1;
};

struct swf_filter_colormatrix {
swf_filter_type	f_type;		/* 6 */
long float	f_matrix[20];
};

struct swf_any_filter {
swf_filter_type			f_fitler_type;
swf_filter_blur			f_filter_blur;
swf_filter_colormatrix		f_filter_colormatrix;
swf_filter_convolution		f_filter_convolution;
swf_filter_glow			f_filter_glow;
};
```

A filter defines how to transform the objects it is attached to. The first byte is the filter type. The data following depend on the type. Because each filter is much different, they are defined in separate structures. You can attach a filter to an object using an ActionScript or the PlaceObject3 tag.

The following describes the different filters available since version 8.

...
Value Name Version
0 Drop Shadow 8

Here you will find a few of the software solutions that have been made possible by Made to Order Software Corporation. Feel free to contact us for more information.

## Snap! Websites

Made to Order Software created Snap! Websites, a CMS system, which allows customers to create their own websites, hosted on our servers.

The new version of Snap! is actually Open Source. You can find more information about Snap! Websites Open Source on the Snap! Website a C++ CMS website.

A few customers using our old Snap! offer include: