mirror of
https://github.com/dyne/FreeJ.git
synced 2026-02-11 23:30:50 +01:00
javascript streaming documentation more fixes to video encoding flash compile fix (Nobuhiro Iwamatsu on debian bugtracker) git-svn-id: svn://dyne.org/rastasoft/freej/trunk@910 383723c8-4afa-0310-b8a8-b1afb83214fc
238 lines
5.3 KiB
C++
238 lines
5.3 KiB
C++
#ifndef _SWF_H_
|
|
#define _SWF_H_
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <setjmp.h>
|
|
#include <assert.h>
|
|
#include <limits.h>
|
|
|
|
|
|
#ifdef DUMP
|
|
#include "bitstream.h"
|
|
#endif
|
|
|
|
#include "flash.h"
|
|
|
|
extern int debug;
|
|
|
|
#include <stdint.h>
|
|
|
|
// Global Types
|
|
typedef uint32_t U32, *P_U32, **PP_U32;
|
|
typedef int32_t S32, *P_S32, **PP_S32;
|
|
typedef uint16_t U16, *P_U16, **PP_U16;
|
|
typedef int16_t S16, *P_S16, **PP_S16;
|
|
typedef uint8_t U8, *P_U8, **PP_U8;
|
|
typedef int8_t S8, *P_S8, **PP_S8;
|
|
typedef int32_t SFIXED, *P_SFIXED;
|
|
typedef int32_t SCOORD, *P_SCOORD;
|
|
typedef uint32_t BOOL;
|
|
|
|
#define ZOOM(v,f) ((v)/(f))
|
|
|
|
#include "matrix.h"
|
|
#include "cxform.h"
|
|
#include "rect.h"
|
|
|
|
#include <sys/time.h>
|
|
#define ST struct timeval t1,t2;
|
|
#define START gettimeofday(&t1,0)
|
|
#define STOP(msg) gettimeofday(&t2,0); printf("%s Delta = %d ms\n", msg, (t2.tv_sec-t1.tv_sec)*1000+(t2.tv_usec-t1.tv_usec)/1000); fflush(stdout);
|
|
|
|
// Start Sound Flags
|
|
enum {
|
|
soundHasInPoint = 0x01,
|
|
soundHasOutPoint = 0x02,
|
|
soundHasLoops = 0x04,
|
|
soundHasEnvelope = 0x08
|
|
|
|
// the upper 4 bits are reserved for synchronization flags
|
|
};
|
|
|
|
// Flags for Sound Format
|
|
enum SounfFlags {
|
|
soundIsStereo = 0x01,
|
|
soundIs16bit = 0x02,
|
|
soundIsADPCMCompressed = 0x10
|
|
};
|
|
|
|
// Flags for defining Button States
|
|
enum ButtonState {
|
|
stateHitTest = 0x08,
|
|
stateDown = 0x04,
|
|
stateOver = 0x02,
|
|
stateUp = 0x01
|
|
};
|
|
|
|
// Actions
|
|
enum Action {
|
|
// Internal actions
|
|
ActionRefresh = 0x00,
|
|
ActionPlaySound = 0x01,
|
|
// Normal actions
|
|
ActionGotoFrame = 0x81,
|
|
ActionGetURL = 0x83,
|
|
ActionNextFrame = 0x04,
|
|
ActionPrevFrame = 0x05,
|
|
ActionPlay = 0x06,
|
|
ActionStop = 0x07,
|
|
ActionToggleQuality = 0x08,
|
|
ActionStopSounds = 0x09,
|
|
ActionWaitForFrame = 0x8a,
|
|
ActionSetTarget = 0x8b,
|
|
ActionGoToLabel = 0x8c
|
|
};
|
|
|
|
class Sound;
|
|
|
|
struct ActionRecord {
|
|
Action action;
|
|
|
|
// GotoFrame & WaitForFrame
|
|
long frameIndex;
|
|
|
|
// GetURL
|
|
char *url;
|
|
char *target;
|
|
|
|
// GotoLabel
|
|
char *frameLabel;
|
|
|
|
// WaitForFrame
|
|
long skipCount;
|
|
|
|
// Sound
|
|
Sound *sound;
|
|
|
|
struct ActionRecord *next;
|
|
|
|
ActionRecord() {
|
|
frameLabel = 0;
|
|
url = 0;
|
|
target = 0;
|
|
sound = 0;
|
|
};
|
|
|
|
~ActionRecord() {
|
|
if (frameLabel) free(frameLabel);
|
|
if (url) free(url);
|
|
if (target) free(target);
|
|
};
|
|
};
|
|
|
|
enum FontFlags {
|
|
fontUnicode = 0x20,
|
|
fontShiftJIS = 0x10,
|
|
fontANSI = 0x08,
|
|
fontItalic = 0x04,
|
|
fontBold = 0x02,
|
|
fontWideCodes = 0x01
|
|
};
|
|
|
|
enum TextFlags {
|
|
isTextControl = 0x80,
|
|
|
|
textIsLarge = 0x70,
|
|
textHasFont = 0x08,
|
|
textHasColor = 0x04,
|
|
textHasYOffset= 0x02,
|
|
textHasXOffset= 0x01
|
|
};
|
|
|
|
#ifndef NULL
|
|
#define NULL 0
|
|
#endif
|
|
|
|
// Tag values that represent actions or data in a Flash script.
|
|
enum
|
|
{
|
|
stagEnd = 0,
|
|
stagShowFrame = 1,
|
|
stagDefineShape = 2,
|
|
stagFreeCharacter = 3,
|
|
stagPlaceObject = 4,
|
|
stagRemoveObject = 5,
|
|
stagDefineBits = 6,
|
|
stagDefineButton = 7,
|
|
stagJPEGTables = 8,
|
|
stagSetBackgroundColor = 9,
|
|
stagDefineFont = 10,
|
|
stagDefineText = 11,
|
|
stagDoAction = 12,
|
|
stagDefineFontInfo = 13,
|
|
stagDefineSound = 14, // Event sound tags.
|
|
stagStartSound = 15,
|
|
stagStopSound = 16,
|
|
stagDefineButtonSound = 17,
|
|
stagSoundStreamHead = 18,
|
|
stagSoundStreamBlock = 19,
|
|
stagDefineBitsLossless = 20, // A bitmap using lossless zlib compression.
|
|
stagDefineBitsJPEG2 = 21, // A bitmap using an internal JPEG compression table.
|
|
stagDefineShape2 = 22,
|
|
stagDefineButtonCxform = 23,
|
|
stagProtect = 24, // This file should not be importable for editing.
|
|
|
|
// These are the new tags for Flash 3.
|
|
stagPlaceObject2 = 26, // The new style place w/ alpha color transform and name.
|
|
stagRemoveObject2 = 28, // A more compact remove object that omits the character tag (just depth).
|
|
stagDefineShape3 = 32, // A shape V3 includes alpha values.
|
|
stagDefineText2 = 33, // A text V2 includes alpha values.
|
|
stagDefineButton2 = 34, // A button V2 includes color transform, alpha and multiple actions
|
|
stagDefineBitsJPEG3 = 35, // A JPEG bitmap with alpha info.
|
|
stagDefineBitsLossless2 = 36, // A lossless bitmap with alpha info.
|
|
stagDefineSprite = 39, // Define a sequence of tags that describe the behavior of a sprite.
|
|
stagNameCharacter = 40, // Name a character definition, character id and a string, (used for buttons, bitmaps, sprites and sounds).
|
|
stagFrameLabel = 43, // A string label for the current frame.
|
|
stagSoundStreamHead2 = 45, // For lossless streaming sound, should not have needed this...
|
|
stagDefineMorphShape = 46, // A morph shape definition
|
|
stagDefineFont2 = 48,
|
|
|
|
notEnoughData = 0xffff, // Special code
|
|
};
|
|
|
|
#ifndef false
|
|
#define false 0
|
|
#endif
|
|
#ifndef true
|
|
#define true 1
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
extern int shape_size,shape_nb,shaperecord_size,shaperecord_nb,style_size,style_nb;
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
|
|
typedef void (*ScanLineFunc)(void *id, long y, long start, long end);
|
|
|
|
class Bitmap;
|
|
struct FlashMovie;
|
|
|
|
|
|
extern "C" {
|
|
#include "jpeglib.h"
|
|
};
|
|
extern "C" {
|
|
#include "zlib.h"
|
|
};
|
|
|
|
#include "graphic.h"
|
|
#include "character.h"
|
|
#include "bitmap.h"
|
|
#include "shape.h"
|
|
#include "displaylist.h"
|
|
#include "button.h"
|
|
#include "font.h"
|
|
#include "text.h"
|
|
#include "adpcm.h"
|
|
#include "program.h"
|
|
#include "sprite.h"
|
|
#include "script.h"
|
|
#include "movie.h"
|
|
|
|
#endif /* _SWF_H_ */
|