1 /* 2 Ming, an SWF output library 3 Copyright (C) 2001 Opaque Industries - http://www.opaque.net/ 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 */ 19 20 /* block.h 21 * 22 * $Id$ 23 * 24 * Notice: This header file contains declarations of functions and types that 25 * are just used internally. All library functions and types that are supposed 26 * to be publicly accessable are defined in ./src/ming.h. 27 */ 28 29 #ifndef SWF_BLOCK_H_INCLUDED 30 #define SWF_BLOCK_H_INCLUDED 31 32 #include "ming.h" 33 #include "blocktypes.h" 34 #include "libming.h" 35 36 #define BLOCK(b) ((SWFBlock)(b)) 37 38 typedef void (*writeSWFBlockMethod)(SWFBlock block, 39 SWFByteOutputMethod method, void *data); 40 typedef int (*completeSWFBlockMethod)(SWFBlock block); 41 42 typedef void (*destroySWFBlockMethod)(SWFBlock block); 43 44 45 struct SWFBlock_s 46 { 47 SWFBlocktype type; 48 49 writeSWFBlockMethod writeBlock; 50 completeSWFBlockMethod complete; 51 destroySWFBlockMethod dtor; 52 53 int length; 54 byte isDefined; 55 byte completed; 56 57 int swfVersion; 58 }; 59 60 /* sets the defined flag in this block */ 61 void SWFBlock_setDefined(SWFBlock block); 62 63 /* returns true if the block has been defined- i.e., written to the file */ 64 BOOL SWFBlock_isDefined(SWFBlock block); 65 66 /* returns the byte length of this block */ 67 int SWFBlock_getLength(SWFBlock block); 68 69 /* destroy this block by calling its destructor */ 70 void destroySWFBlock(SWFBlock block); 71 72 /* calls the block's completion method and returns its byte length */ 73 int completeSWFBlock(SWFBlock block); 74 75 /* writes this block to the given output method */ 76 int writeSWFBlockToMethod(SWFBlock block, SWFByteOutputMethod method, 77 void *data); 78 79 /* initialize character values to something sane */ 80 void SWFBlockInit(SWFBlock block); 81 82 /* return a new ShowFrame block */ 83 SWFBlock newSWFShowFrameBlock(); 84 85 /* return a new End block */ 86 SWFBlock newSWFEndBlock(); 87 88 /* return a new Protect block */ 89 SWFBlock newSWFProtect(const char *); 90 91 /* return a new empty block */ 92 SWFBlock newEmptySWFBlock(); 93 94 /* return the block's type */ 95 SWFBlocktype SWFBlock_getType(SWFBlock block); 96 97 #endif /* SWF_BLOCK_H_INCLUDED */ 98