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 58 59 /* sets the defined flag in this block */ 60 void SWFBlock_setDefined(SWFBlock block); 61 62 /* returns true if the block has been defined- i.e., written to the file */ 63 BOOL SWFBlock_isDefined(SWFBlock block); 64 65 /* returns the byte length of this block */ 66 int SWFBlock_getLength(SWFBlock block); 67 68 /* destroy this block by calling its destructor */ 69 void destroySWFBlock(SWFBlock block); 70 71 /* calls the block's completion method and returns its byte length */ 72 int completeSWFBlock(SWFBlock block); 73 74 /* writes this block to the given output method */ 75 int writeSWFBlockToMethod(SWFBlock block, SWFByteOutputMethod method, 76 void *data); 77 78 /* initialize character values to something sane */ 79 void SWFBlockInit(SWFBlock block); 80 81 /* return a new ShowFrame block */ 82 SWFBlock newSWFShowFrameBlock(); 83 84 /* return a new End block */ 85 SWFBlock newSWFEndBlock(); 86 87 /* return a new Protect block */ 88 SWFBlock newSWFProtectBlock(); 89 90 /* return a new empty block */ 91 SWFBlock newEmptySWFBlock(); 92 93 /* return the block's type */ 94 SWFBlocktype SWFBlock_getType(SWFBlock block); 95 96 #endif /* SWF_BLOCK_H_INCLUDED */ 97