www.pudn.com > FlashFormat.rar > HFExampleFont.cpp
// Copyright © 1999 Middlesoft, Inc. All rights reserved.
// First Created By Lee Thomason.
// First Created On 11/05/1999.
// Last Modified On 11/09/1999.
/****************************************************************************************
File Summary: HFExampleFont.cpp
To demonstrate HFFont.
Creates a one-frame movie with:
1) a black background,
2) two "FLASH HSALF" string of self-defined "silly font", one of red color in depth two,
the other of green color in depth one.
****************************************************************************************/
#include "HF3SDK.h"
#include "HFExample.h"
void HLCreateFontMovie()
{
// Create shapes for some letters
// I actually created this font on some notebook paper, to demonstrate
// that it is actually fairly easy to do.
// Letter F. Advance = 800
HFPolygon* letterF = new HFPolygon( 0, 200 );
letterF->AddStraightLine( 0, 600 );
letterF->AddStraightLine( 200, 0 );
letterF->AddStraightLine( 0, -300 );
letterF->AddStraightLine( 200, 0 );
letterF->AddStraightLine( 0, -100 );
letterF->AddStraightLine( -200, 0 );
letterF->AddStraightLine( 0, -100 );
letterF->AddStraightLine( 500, 0 );
letterF->AddStraightLine( 0, -100 );
letterF->AddStraightLine( -700, 0 );
// Letter L. Advance = 700
HFPolygon* letterL = new HFPolygon( 0, 200 );
letterL->AddStraightLine( 0, 600 );
letterL->AddStraightLine( 500, 0 );
letterL->AddStraightLine( 0, -100 );
letterL->AddStraightLine( -300, 0 );
letterL->AddStraightLine( 0, -500 );
letterL->AddStraightLine( -200, 0 );
// Letter A. Advance = 900
HFPolygon* letterA = new HFPolygon( 0, 800 );
letterA->AddStraightLine( 400, -600 );
letterA->AddStraightLine( 400, 600 );
letterA->AddStraightLine( -200, 0 );
letterA->AddStraightLine( -200, -400 );
letterA->AddStraightLine( -200, 400 );
letterA->AddStraightLine( -200, 0 );
// Letter S. Advance = 700
HFPolygon* letterS = new HFPolygon( 600, 200 );
letterS->AddStraightLine( -400, 0 );
// top left curve of the S
letterS->AddCurvedLine( -150, 40, // The delta from the previous point to the control point.
-50, 110 ); // The delta from the contol point to the end point.
letterS->AddCurvedLine( 50, 110,
150, 40 );
letterS->AddStraightLine( 200, 0 );
letterS->AddStraightLine( 0, 200 );
letterS->AddStraightLine( -400, 0 );
letterS->AddStraightLine( 0, 100 );
letterS->AddStraightLine( 400, 0 );
letterS->AddCurvedLine( 70, -60,
30, -140 ); // lower right curve of the S
letterS->AddCurvedLine( -30, -140,
-70, -60 );
letterS->AddStraightLine( -200, 0 );
letterS->AddStraightLine( 0, -100 );
letterS->AddStraightLine( 400, 0 );
letterS->AddStraightLine( 0, -100 );
// Letter H. Advance = 700
HFPolygon* letterH = new HFPolygon( 0, 200 );
letterH->AddStraightLine( 0, 600 );
letterH->AddStraightLine( 200, 0 );
letterH->AddStraightLine( 0, -200 );
letterH->AddStraightLine( 200, 0 );
letterH->AddStraightLine( 0, 200 );
letterH->AddStraightLine( 200, 0 );
letterH->AddStraightLine( 0, -600 );
letterH->AddStraightLine( -200, 0 );
letterH->AddStraightLine( 0, 200 );
letterH->AddStraightLine( -200, 0 );
letterH->AddStraightLine( 0, -200 );
letterH->AddStraightLine( -200, 0 );
// Letter Space. Advance = 700
HFPolygon* letterSpace = new HFPolygon( 0, 0 );
// Now add the letters to the font.
HFFont* font = new HFFont( "Silly Font" );
font->AddGlyph( letterF, 'F', 800 );
font->AddGlyph( letterL, 'L', 700 );
font->AddGlyph( letterA, 'A', 900 );
font->AddGlyph( letterS, 'S', 700 );
font->AddGlyph( letterH, 'H', 700 );
font->AddGlyph( letterSpace, ' ', 500 );
HFMovie movie;
HFText* text1 = new HFText( "FLASH HSALF", font ); // Creates the text box, with a bounding
// rectangle, a string, and a font id.
text1->SetDepth( 3 );
text1->SetSolidFill( Red_RGBA );
// text1->Translate( 100*FPIXEL, 100*FPIXEL );
HFRectangle* boundingBox = new HFRectangle( 0, 0, 800, 1000 );
boundingBox->SetLineColor( Green_RGBA );
boundingBox->SetSolidFill( Black_RGBA );
boundingBox->SetDepth( 1 );
// boundingBox->Translate( 100*FPIXEL, 100*FPIXEL );
movie.Frame( 0 )->SetBackgoundColor( Black_RGBA );
movie.Frame( 0 )->AddObject( text1 );
movie.Frame( 0 )->AddObject( boundingBox );
text1->SetDepth( 2 );
// text1->Translate( 10*FPIXEL, 10*FPIXEL );
text1->Scale( FloatToFixed( 1.2 ), FloatToFixed( 1.2 ) );
text1->Rotate( 10 * fixed_1 );
FRGBA halfGreen = {0, 255, 0, 128};
text1->SetSolidFill( halfGreen );
movie.Frame( 0 )->AddObject( text1 );
movie.WriteMovie( "HFExampleFont.swf" );
delete font;
delete letterF;
delete letterL;
delete letterA;
delete letterS;
delete letterH;
delete letterSpace;
delete text1;
delete boundingBox;
}