OOTint MIOSprite_New (OOTint pmPicID, SRCPOS *pmSrcPos) { SpriteInfo *mySpriteInfo; char myAllocMessage [4096]; static int myStSpriteCount = 1; MIO_CheckOuputIsToWindow ("Sprite.New"); MIO_CheckOuputWindowIsInGraphicsMode ("Sprite.New"); MIO_MakePopupWindowVisible (); mySpriteInfo = (SpriteInfo *) malloc (sizeof (SpriteInfo)); if (mySpriteInfo == NULL) { SET_ERRNO (E_PIC_CANT_ALLOC_MEM_FOR_PIC); return 0; } // mySpriteInfo -> picID = pmPicID; MIOPic_GetInfoForSprite (pmPicID, &(mySpriteInfo -> picWidth), &(mySpriteInfo -> picHeight), &(mySpriteInfo -> picTransparentColour), &(mySpriteInfo -> picMDPicInfo)); mySpriteInfo -> x = MIO_selectedRunWindowInfo -> width / 2; mySpriteInfo -> y = MIO_selectedRunWindowInfo -> height / 2; mySpriteInfo -> spriteRect = MyGetSpriteRect (mySpriteInfo); mySpriteInfo -> spriteHeight = FOREGROUND_HEIGHT + myStSpriteCount; mySpriteInfo -> centered = FALSE; mySpriteInfo -> visible = FALSE; myStSpriteCount++; MDIO_sprintf (myAllocMessage, "Allocated from picture %d", pmPicID); mySpriteInfo -> spriteID = MIO_IDAdd (SPRITE_ID, mySpriteInfo, pmSrcPos, myAllocMessage, NULL); // Couldn't allocate an identifier. Return the default font ID. if (mySpriteInfo -> spriteID == 0) { MyFreeSprite (mySpriteInfo); return 0; } MIOPic_IncremementSpriteUse (pmPicID); MyAddToQueue (MIO_selectedRunWindowInfo, mySpriteInfo); return mySpriteInfo -> spriteID; } // MIOSprite_New
extern OOTint MIOHashmap_New (SRCPOS *pmSrcPos) { hashmap *newmap; OOTint myID; newmap = newHashmap(32); // arbitrary size hint myID = MIO_IDAdd (HASHMAP_ID, newmap, pmSrcPos, "Hashmap", NULL); //comparison bit is set to "Hasmap" just because // Couldn't allocate an identifier. Return the default font ID. if (myID == 0) { deleteHashmap(newmap); } return myID; }