summaryrefslogtreecommitdiff
path: root/core/multimedia/opieplayer/libflash/program.h
Side-by-side diff
Diffstat (limited to 'core/multimedia/opieplayer/libflash/program.h') (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/libflash/program.h185
1 files changed, 185 insertions, 0 deletions
diff --git a/core/multimedia/opieplayer/libflash/program.h b/core/multimedia/opieplayer/libflash/program.h
new file mode 100644
index 0000000..7672d88
--- a/dev/null
+++ b/core/multimedia/opieplayer/libflash/program.h
@@ -0,0 +1,185 @@
+/////////////////////////////////////////////////////////////
+// Flash Plugin and Player
+// Copyright (C) 1998 Olivier Debon
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+///////////////////////////////////////////////////////////////
+#ifndef _PROGRAM_H_
+#define _PROGRAM_H_
+
+enum ControlType {
+ ctrlPlaceObject,
+ ctrlPlaceObject2,
+ ctrlRemoveObject,
+ ctrlRemoveObject2,
+ ctrlDoAction,
+ ctrlStartSound,
+ ctrlStopSound,
+ ctrlBackgroundColor
+};
+
+enum PlaceFlags {
+ placeIsMove = 0x01,
+ placeHasCharacter = 0x02,
+ placeHasMatrix = 0x04,
+ placeHasColorXform = 0x08,
+ placeHasRatio = 0x10,
+ placeHasName = 0x20,
+ placeHasClip = 0x40
+};
+
+struct Control {
+ ControlType type;
+
+ // Place, Remove, Sound
+ Character *character;
+ long depth;
+
+ // Place 1&2
+ PlaceFlags flags;
+ Matrix matrix;
+ Cxform cxform;
+ long ratio;
+ long clipDepth;
+ char *name;
+
+ // BackgroundColor
+ Color color;
+
+ // DoAction
+ ActionRecord *actionRecords;
+
+ struct Control *next;
+
+
+ // Methods
+
+ void addActionRecord( ActionRecord *ar)
+ {
+ ar->next = 0;
+
+ if (actionRecords == 0) {
+ actionRecords = ar;
+ } else {
+ ActionRecord *current;
+
+ for(current = actionRecords; current->next; current = current->next);
+
+ current->next = ar;
+ }
+ };
+
+ Control()
+ {
+ actionRecords = 0;
+ cxform.aa = 1.0; cxform.ab = 0;
+ cxform.ra = 1.0; cxform.rb = 0;
+ cxform.ga = 1.0; cxform.gb = 0;
+ cxform.ba = 1.0; cxform.bb = 0;
+ ratio = 0;
+ clipDepth = 0;
+ name = 0;
+ };
+
+ ~Control()
+ {
+ ActionRecord *ar,*del;
+ for(ar = actionRecords; ar;)
+ {
+ del = ar;
+ ar = ar->next;
+ delete del;
+ }
+ if (name) {
+ free(name);
+ }
+ };
+};
+
+struct Frame {
+ char *label;
+ Control *controls; // Controls for this frame
+};
+
+enum MovieStatus {
+ MoviePaused,
+ MoviePlay
+};
+
+struct FlashMovie;
+
+struct Program {
+ DisplayList *dl;
+
+ Frame *frames; // Array
+ long nbFrames; // Number of valid frames
+ long currentFrame;
+ long loadingFrame;
+ long totalFrames; // Total expected number of frames
+ long nextFrame;
+ int movieWait; // If true freeze movie until next loaded frame
+ MovieStatus movieStatus;
+ Sound *currentSound;
+ long settings;
+ FlashMovie *movie;
+ long render; // True if needed to be rendered
+
+ Program(FlashMovie *movie,long n);
+ ~Program();
+
+ void rewindMovie();
+ void pauseMovie();
+ void continueMovie();
+ void nextStepMovie();
+ void gotoFrame(GraphicDevice *gd, long f);
+
+ long processMovie(GraphicDevice *, SoundMixer *);
+ long nestedMovie(GraphicDevice *, SoundMixer *, Matrix *, Cxform *);
+ long runFrame(GraphicDevice *, SoundMixer *, long f, long action=1);
+ long handleEvent(GraphicDevice *, SoundMixer *, FlashEvent *);
+ long doAction(GraphicDevice *gd, ActionRecord *action, SoundMixer *);
+ void setCurrentFrameLabel(char *label);
+ void advanceFrame();
+ void addControlInCurrentFrame(Control *ctrl);
+ void setGetUrlMethod( void (*)(char *, char *, void *), void *);
+ void modifySettings(long flags);
+ long searchFrame(GraphicDevice *gd, char *, char *);
+ void validateLoadingFrame();
+ long getCurrentFrame();
+ void setCurrentFrame(long);
+
+ Frame *getFrames();
+ long getNbFrames();
+
+ DisplayList *getDisplayList();
+
+#ifdef DUMP
+ void dump(BitStream *bs);
+static void dumpActions(BitStream *bs, ActionRecord *actions);
+#endif
+};
+
+DisplayListEntry *findFocus(DisplayList *dl);
+void setFlashTimer(struct timeval *tv, int time_ms);
+int checkFlashTimer(struct timeval *tv);
+
+void loadNewSwf(FlashMovie *movie, char *url, int level);
+
+void computeBBox(FlashMovie *movie, Rect *rect, DisplayListEntry *e);
+
+long processMovie(FlashMovie *movie);
+
+#endif /* _PROGRAM_H_ */