/* * Adds a block to a movie. * This function adds a block or character to a movieclip. * returns a SWFDisplayItem */ SWFDisplayItem SWFMovieClip_add(SWFMovieClip clip, SWFBlock block) { if ( SWFBlock_getType(block) == SWF_DEFINEBITS || SWFBlock_getType(block) == SWF_DEFINEBITSJPEG2 || SWFBlock_getType(block) == SWF_DEFINEBITSJPEG3 || SWFBlock_getType(block) == SWF_DEFINELOSSLESS || SWFBlock_getType(block) == SWF_DEFINELOSSLESS2 ) { block = (SWFBlock)newSWFShapeFromBitmap((SWFBitmap)block, SWFFILL_TILED_BITMAP); } if ( SWFBlock_isCharacter(block) ) { SWFCharacter_getDependencies((SWFCharacter)block, &CHARACTER(clip)->dependencies, &CHARACTER(clip)->nDependencies); SWFCharacter_addDependency((SWFCharacter)clip, (SWFCharacter)block); SWFCharacter_setFinished((SWFCharacter)block); return SWFDisplayList_add(clip->displayList, clip->blockList, (SWFCharacter)block); } else { /* XXX - make sure it's a legit block for a sprite */ SWFBlockList_addBlock(clip->blockList, block); } return NULL; }
void add_clip(SWFMovie mo, char* file, char* name, char* url, int x, int y) { FILE *fd; SWFJpegBitmap bm; SWFShape sh; SWFMovieClip mc; SWFDisplayItem it; SWFAction ac; char action[1024]; printf("Adding %s\n", file); fd = fopen(file, "r"); if ( ! fd ) { perror(file); exit(1); } bm = newSWFJpegBitmap(fd); sh = newSWFShapeFromBitmap((SWFBitmap)bm, SWFFILL_CLIPPED_BITMAP); mc = newSWFMovieClip(); SWFMovieClip_add(mc, (SWFBlock)sh); SWFMovieClip_nextFrame(mc); /* showFrame */ it = SWFMovie_add(mo, (SWFBlock)mc); SWFDisplayItem_setName(it, name); SWFDisplayItem_moveTo(it, x, y); /* "Click" handler */ sprintf(action, " \ %s.onPress = function () { \ _root.CoverArtLoader.loadClip('%s', coverart); \ }; \
/* * Adds a block to a movie. * This function adds a block or character to a movie. * Do not use this function. Use SWFMovie_add instead * returns a SWFDisplayItem */ SWFDisplayItem SWFMovie_add_internal(SWFMovie movie /* movie to which the block will be added */, SWFMovieBlockType ublock /* block to add to the movie */) { SWFBlock block = ublock.block; if ( block == NULL ) return NULL; /* if they're trying to add a raw bitmap, we'll be nice and turn it into a shape */ if ( SWFBlock_getType(block) == SWF_DEFINEBITS || SWFBlock_getType(block) == SWF_DEFINEBITSJPEG2 || SWFBlock_getType(block) == SWF_DEFINEBITSJPEG3 || SWFBlock_getType(block) == SWF_DEFINELOSSLESS || SWFBlock_getType(block) == SWF_DEFINELOSSLESS2 ) { block = (SWFBlock)newSWFShapeFromBitmap((SWFBitmap)block, SWFFILL_TILED_BITMAP); } /* if it's a text object, we need to translate fonts into font characters */ if ( SWFBlock_getType(block) == SWF_DEFINETEXT || SWFBlock_getType(block) == SWF_DEFINETEXT2 ) { SWFMovie_resolveTextFonts(movie, (SWFText)block); } if ( SWFBlock_getType(block) == SWF_DEFINEEDITTEXT) { SWFMovie_resolveTextfieldFont(movie, (SWFTextField)block); } // not nice but has to be done! if ( SWFBlock_getType(block) == SWF_INITACTION) { SWFInitAction init = (SWFInitAction)block; SWFMovieClip mc = SWFInitAction_getMovieClip(init); if(mc != NULL) SWFMovie_addBlock(movie, (SWFBlock)mc); } if ( SWFBlock_isCharacter(block) ) { SWFCharacter_setFinished((SWFCharacter)block); SWFMovie_addCharacterDependencies(movie, (SWFCharacter)block); return SWFDisplayList_add(movie->displayList, movie->blockList, (SWFCharacter)block); } else SWFMovie_addBlock(movie, block); return NULL; }
/* * This function replaces a displayable character with a new one. * Do not use this function. Use SWFMovie_replace instead! * returns 0 on success */ int SWFMovie_replace_internal(SWFMovie movie, SWFDisplayItem item, SWFMovieBlockType ublock) { SWFBlock block = ublock.block; if(block == NULL || item == NULL) return -1; if ( SWFBlock_getType(block) == SWF_DEFINEBITS || SWFBlock_getType(block) == SWF_DEFINEBITSJPEG2 || SWFBlock_getType(block) == SWF_DEFINEBITSJPEG3 || SWFBlock_getType(block) == SWF_DEFINELOSSLESS || SWFBlock_getType(block) == SWF_DEFINELOSSLESS2 ) { block = (SWFBlock)newSWFShapeFromBitmap((SWFBitmap)block, SWFFILL_TILED_BITMAP); } /* if it's a text object, we need to translate fonts into font characters */ if ( SWFBlock_getType(block) == SWF_DEFINETEXT || SWFBlock_getType(block) == SWF_DEFINETEXT2 ) { SWFMovie_resolveTextFonts(movie, (SWFText)block); } if ( SWFBlock_getType(block) == SWF_DEFINEEDITTEXT) { SWFMovie_resolveTextfieldFont(movie, (SWFTextField)block); } if ( SWFBlock_isCharacter(block) ) { SWFCharacter_setFinished((SWFCharacter)block); SWFMovie_addCharacterDependencies(movie, (SWFCharacter)block); SWFDisplayItem_replace(item, (SWFCharacter)block); return 0; } SWF_warn("SWFMovie_replace: only characters can be replaced\n"); return -1; }
int main(int argc, char **argv) { SWFMovie mo; const char *jpeg_filename="red.jpg"; FILE *jpeg_fd; SWFJpegBitmap jpeg_bm; SWFShape jpeg_sh; SWFMovieClip jpeg_mc; /********************************************* * * Initialization * *********************************************/ if ( argc > 1 ) jpeg_filename=argv[1]; else { fprintf(stderr, "Usage: %s <jpegfile>\n", argv[0]); return 1; } puts("Setting things up"); Ming_init(); Ming_useSWFVersion (OUTPUT_VERSION); Ming_setScale(1.0); /* so we talk twips */ mo = newSWFMovie(); /***************************************************** * * Add the RED clip * *****************************************************/ puts("Adding red"); jpeg_fd = fopen(jpeg_filename, "r"); if ( ! jpeg_fd ) { perror(jpeg_filename); return 1; } jpeg_bm = newSWFJpegBitmap(jpeg_fd); jpeg_sh = newSWFShapeFromBitmap((SWFBitmap)jpeg_bm, SWFFILL_CLIPPED_BITMAP); jpeg_mc = newSWFMovieClip(); SWFMovieClip_add(jpeg_mc, (SWFBlock)jpeg_sh); SWFMovieClip_nextFrame(jpeg_mc); /* showFrame */ SWFMovie_add(mo, (SWFBlock)jpeg_mc); puts("Saving " OUTPUT_FILENAME ); SWFMovie_nextFrame(mo); /* showFrame */ SWFMovie_save(mo, OUTPUT_FILENAME); return 0; }
int main(int argc, char **argv) { SWFMovie mo; SWFInput in; SWFBitmap bitmap; SWFShape shpSmt; SWFShape shpHrd; SWFMovieClip mc; SWFDisplayItem it; int swfversion; SWFFont font; SWFMovieClip dejagnuclip; char outputFilename[256]; FILE* imgfile; if ( argc < 2 ) { fprintf(stderr, "Usage: %s <swf_version>\n", argv[0]); exit(EXIT_FAILURE); } swfversion = atoi(argv[1]); sprintf(outputFilename, "BitmapSmoothingTest-v%d.swf", swfversion); /********************************************* * * Initialization * *********************************************/ puts("Setting things up"); Ming_init(); Ming_useSWFVersion (swfversion); mo = newSWFMovieWithVersion(swfversion); /**************************************************** * Create filled shapes mc ****************************************************/ imgfile = fopen(MEDIADIR"/vstroke.png", "rb"); if (!imgfile) { fprintf(stderr, "Failed to open bitmap file"); return EXIT_FAILURE; } // Note that recent ming version have the more convenient // newSWFInput_filename() function, but we want to support // older versions. in = newSWFInput_file(imgfile); bitmap = newSWFBitmap_fromInput(in); if (!bitmap) { return EXIT_FAILURE; } shpSmt = newSWFShapeFromBitmap(bitmap, SWFFILL_CLIPPED_BITMAP); shpHrd = newSWFShapeFromBitmap(bitmap, SWFFILL_NONSMOOTHED_CLIPPED_BITMAP); mc = newSWFMovieClip(); SWFMovieClip_add(mc, (SWFBlock)shpSmt); it = SWFMovieClip_add(mc, (SWFBlock)shpHrd); SWFDisplayItem_moveTo(it, 0, 5); SWFMovieClip_nextFrame(mc); /**************************************************** * Create filled shapes mc, and scale it ****************************************************/ it = SWFMovie_add(mo, (SWFBlock)mc); SWFDisplayItem_scaleTo(it, 30, 10); SWFMovie_setDimension(mo, SWFBitmap_getWidth(bitmap)*30, 500); /**************************************************** * Add dejagnu clip ****************************************************/ font = get_default_font(MEDIADIR); dejagnuclip = get_dejagnu_clip((SWFBlock)font, 10, 0, 0, 200, 200); it = SWFMovie_add(mo, (SWFBlock)dejagnuclip); SWFDisplayItem_setDepth(it, 200); SWFDisplayItem_move(it, 0, 100); /**************************************************** * TODO: Add actions ****************************************************/ /**************************************************** * Save things up ****************************************************/ printf("Saving %s\n", outputFilename); SWFMovie_nextFrame(mo); /* showFrame */ SWFMovie_save(mo, outputFilename); fclose(imgfile); return EXIT_SUCCESS; }