BOOLEAN IsSTCIETRLEFile( CHAR8 * ImageFile ) { HWFILE hFile; STCIHeader Header; UINT32 uiBytesRead; CHECKF( FileExists( ImageFile ) ); // Open the file and read the header hFile = FileOpen( ImageFile, FILE_ACCESS_READ, FALSE ); CHECKF( hFile ); if (!FileRead( hFile, &Header, STCI_HEADER_SIZE, &uiBytesRead ) || uiBytesRead != STCI_HEADER_SIZE || memcmp( Header.cID, STCI_ID_STRING, STCI_ID_LEN ) != 0 ) { DbgMessage( TOPIC_HIMAGE, DBG_LEVEL_3, "Problem reading STCI header." ); FileClose( hFile ); return( FALSE ); } FileClose( hFile ); if (Header.fFlags & STCI_ETRLE_COMPRESSED) { return( TRUE ); } else { return( FALSE ); } }
BOOLEAN EnterBobbyRAmmo() { VOBJECT_DESC VObjectDesc; // load the background graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\ammobackground.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiAmmoBackground)); // load the gunsgrid graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\ammogrid.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiAmmoGrid)); InitBobbyBrTitle(); SetFirstLastPagesForNew( IC_AMMO ); // CalculateFirstAndLastIndexs(); //Draw menu bar InitBobbyMenuBar( ); RenderBobbyRAmmo( ); return(TRUE); }
BOOLEAN LoadHistory( void ) { VOBJECT_DESC VObjectDesc; // load History video objects into memory // title bar VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\programtitlebar.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiTITLE)); // top portion of the screen background VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\historywindow.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiTOP)); // shaded line VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\historylines.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiSHADELINE)); /* Not being used??? DF commented out // vert line VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\historyvertline.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiVERTLINE)); */ // black divider line - long ( 480 length) VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\divisionline480.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiLONGLINE)); return (TRUE); }
BOOLEAN InitAnimationCache( UINT16 usSoldierID, AnimationSurfaceCacheType *pAnimCache ) { UINT32 cnt; // Allocate entries AnimDebugMsg( String( "*** Initializing anim cache surface for soldier %d", usSoldierID ) ); pAnimCache->usCachedSurfaces = MemAlloc( sizeof( UINT16 ) * guiCacheSize ); CHECKF( pAnimCache->usCachedSurfaces!= NULL ); AnimDebugMsg( String( "*** Initializing anim cache hit counter for soldier %d", usSoldierID ) ); pAnimCache->sCacheHits = MemAlloc( sizeof( UINT16) * guiCacheSize ); CHECKF( pAnimCache->sCacheHits!= NULL ); // Zero entries for ( cnt = 0; cnt < guiCacheSize; cnt++ ) { pAnimCache->usCachedSurfaces[ cnt ] = EMPTY_CACHE_ENTRY; pAnimCache->sCacheHits[ cnt ] = 0; } pAnimCache->ubCacheSize = 0; // Zero surface databse history for this soldeir ClearAnimationSurfacesUsageHistory( usSoldierID ); return( TRUE ); }
BOOLEAN InitAimDefaults() { VOBJECT_DESC VObjectDesc; // load the Rust bacground graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\rustbackground.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiRustBackGround)); // load the Aim Symbol graphic and add it if(gGameExternalOptions.gfUseNewStartingGearInterface) { VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; GetMLGFilename( VObjectDesc.ImageFile, MLG_AIMSYMBOL_SMALL ); CHECKF(AddVideoObject(&VObjectDesc, &guiAimSymbol)); //Mouse region for the Links MSYS_DefineRegion( &gSelectedAimLogo, AIM_SYMBOL_SMALL_X, AIM_SYMBOL_SMALL_Y, AIM_SYMBOL_SMALL_X+AIM_SYMBOL_SMALL_WIDTH, AIM_SYMBOL_SMALL_Y+AIM_SYMBOL_SMALL_HEIGHT, MSYS_PRIORITY_HIGH, CURSOR_WWW, MSYS_NO_CALLBACK, SelectAimLogoRegionCallBack); MSYS_AddRegion(&gSelectedAimLogo); } else { VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; GetMLGFilename( VObjectDesc.ImageFile, MLG_AIMSYMBOL ); CHECKF(AddVideoObject(&VObjectDesc, &guiAimSymbol)); //Mouse region for the Links MSYS_DefineRegion( &gSelectedAimLogo, AIM_SYMBOL_X, AIM_SYMBOL_Y, AIM_SYMBOL_X+AIM_SYMBOL_WIDTH, AIM_SYMBOL_Y+AIM_SYMBOL_HEIGHT, MSYS_PRIORITY_HIGH, CURSOR_WWW, MSYS_NO_CALLBACK, SelectAimLogoRegionCallBack); MSYS_AddRegion(&gSelectedAimLogo); } return(TRUE); }
BOOLEAN EnterBobbyRMisc() { VOBJECT_DESC VObjectDesc; // load the background graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\miscbackground.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiMiscBackground)); // load the gunsgrid graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\miscgrid.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiMiscGrid)); InitBobbyBrTitle(); guiPrevMiscFilterMode = -1; guiCurrentMiscFilterMode = -1; guiCurrentMiscSubFilterMode = -1; guiPrevMiscSubFilterMode = -1; SetFirstLastPagesForNew( IC_BOBBY_MISC, guiCurrentMiscFilterMode, guiCurrentMiscSubFilterMode ); //Draw menu bar InitBobbyMenuBar( ); InitBobbyRMiscFilterBar(); // CalculateFirstAndLastIndexs(); RenderBobbyRMisc( ); return(TRUE); }
BOOLEAN EnterBriefingRoomEnter() { VOBJECT_DESC VObjectDesc; UINT16 i, usPosY; //----------------------------------------- // upon entry to Imp home page memset(pPlayerBriefingRoomEnterActivationString, 0, sizeof(pPlayerBriefingRoomEnterActivationString)); // reset string position iStringBriefingRoomEnterPos =0; // reset activation cursor position uiCursorBriefingRoomEnterPosition = IMP_PLAYER_ACTIVATION_STRING_X; // we have now vsisited IMP, reset fact we haven't fNotVistedImpYet = FALSE; //------------------------ LaptopInitBriefingRoomEnter(); InitBriefingRoomEnterDefaults(); // load the Rust bacground graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; //FilenameForBPP("LAPTOP\\rustbackground.sti", VObjectDesc.ImageFile); FilenameForBPP("BriefingRoom\\aimlogo.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiRustBriefingRoomEnterLogoAim)); // load the MemberShipcard graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("BriefingRoom\\BUTTONS.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiContentButtonBriefingRoomEnter)); // this procedure will load the activation indent into memory VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\ActivationIndent.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiBRIEFINGROOM_MISSIONACTIVATIONINDENT)); //** Mouse Regions ** usPosY = BRIEFINGROOM_MISSION_CONTENTBUTTON_Y + 120; for(i=0; i<BRIEFINGROOM_MISSION_BUTTONS_DEF; i++) { if ( i == 0 ) MSYS_DefineRegion( &gSelectedBriefingRoomEnterTocMenuRegion[i], BRIEFINGROOM_MISSION_TOC_X+120, usPosY, (UINT16)(BRIEFINGROOM_MISSION_TOC_X+120 + BRIEFINGROOM_MISSION_BUTTON_SIZE_X), (UINT16)(usPosY + BRIEFINGROOM_MISSION_BUTTON_SIZE_Y), MSYS_PRIORITY_HIGH, CURSOR_WWW, MSYS_NO_CALLBACK, SelectBriefingRoomEnterLocationButton); MSYS_AddRegion(&gSelectedBriefingRoomEnterTocMenuRegion[i]); usPosY += BRIEFINGROOM_MISSION_TOC_GAP_Y; } fFirstTimeInBriefingRoomEnter = FALSE; RenderBriefingRoomEnter(); return( TRUE ); }
BOOLEAN GetVideoObjectETRLEProperties( HVOBJECT hVObject, ETRLEObject *pETRLEObject, UINT16 usIndex ) { CHECKF( usIndex >= 0 ); CHECKF( usIndex < hVObject->usNumberOfObjects ); memcpy( pETRLEObject, &( hVObject->pETRLEObject[ usIndex ] ), sizeof( ETRLEObject ) ); return( TRUE ); }
BOOLEAN Copy8BPPImageTo16BPPBuffer( HIMAGE hImage, BYTE *pDestBuf, UINT16 usDestWidth, UINT16 usDestHeight, UINT16 usX, UINT16 usY, SGPRect *srcRect ) { UINT32 uiSrcStart, uiDestStart, uiNumLines, uiLineSize; UINT32 rows, cols; UINT8 *pSrc, *pSrcTemp; UINT16 *pDest, *pDestTemp; UINT16 *p16BPPPalette; p16BPPPalette = hImage->pui16BPPPalette; // Assertions Assert( p16BPPPalette != NULL ); Assert( hImage != NULL ); // Validations CHECKF( hImage->p16BPPData != NULL ); CHECKF( usX >= 0 ); CHECKF( usX < usDestWidth ); CHECKF( usY >= 0 ); CHECKF( usY < usDestHeight ); CHECKF( srcRect->iRight > srcRect->iLeft ); CHECKF( srcRect->iBottom > srcRect->iTop ); // Determine memcopy coordinates uiSrcStart = srcRect->iTop * hImage->usWidth + srcRect->iLeft; uiDestStart = usY * usDestWidth + usX; uiNumLines = ( srcRect->iBottom - srcRect->iTop ); uiLineSize = ( srcRect->iRight - srcRect->iLeft ); CHECKF( usDestWidth >= uiLineSize ); CHECKF( usDestHeight >= uiNumLines ); // Convert to Pixel specification pDest = ( UINT16*)pDestBuf + uiDestStart; pSrc = hImage->p8BPPData + uiSrcStart; DbgMessage( TOPIC_HIMAGE, DBG_LEVEL_3, String( "Start Copying at %p", pDest ) ); // For every entry, look up into 16BPP palette for( rows = 0; rows < uiNumLines-1; rows++ ) { pDestTemp = pDest; pSrcTemp = pSrc; for ( cols = 0; cols < uiLineSize; cols++ ) { *pDestTemp = p16BPPPalette[ *pSrcTemp ]; pDestTemp++; pSrcTemp++; } pDest += usDestWidth; pSrc += hImage->usWidth; } // Do last line DbgMessage( TOPIC_HIMAGE, DBG_LEVEL_3, String( "End Copying at %p", pDest ) ); return( TRUE ); }
// Set shades for fonts BOOLEAN SetFontShade( UINT32 uiFontID, INT8 bColorID ) { HVOBJECT pFont; CHECKF( bColorID > 0 ); CHECKF( bColorID < 16 ); pFont = GetFontObject( uiFontID ); pFont->pShadeCurrent = pFont->pShades[ bColorID ]; return( TRUE ); }
BOOLEAN GetVideoObjectETRLEPropertiesFromIndex( UINT32 uiVideoObject, ETRLEObject *pETRLEObject, UINT16 usIndex ) { HVOBJECT hVObject; // Get video object #ifdef _DEBUG gubVODebugCode = DEBUGSTR_GETVIDEOOBJECTETRLEPROPERTIESFROMINDEX; #endif CHECKF( GetVideoObject( &hVObject, uiVideoObject ) ); CHECKF( GetVideoObjectETRLEProperties( hVObject, pETRLEObject, usIndex ) ); return( TRUE ); }
int main(void) { const char *filedir = "dirfile"; const char *format = "dirfile/format"; int error, r = 0; DIRFILE *D; gd_entry_t E, e; E.field = "data"; E.field_type = GD_LINCOM_ENTRY; E.fragment_index = 0; E.EN(lincom,n_fields) = 1; E.comp_scal = 0; E.in_fields[0] = "INDEX"; E.EN(lincom,m)[0] = 1.; E.scalar[0] = NULL; E.scalar[0 + GD_MAX_LINCOM] = "c"; E.scalar_ind[0 + GD_MAX_LINCOM] = 3; rmdirfile(); D = gd_open(filedir, GD_RDWR | GD_CREAT | GD_VERBOSE); gd_add_spec(D, "c CARRAY INT64 1 2 3 4", 0); gd_add(D, &E); error = gd_error(D); /* check */ gd_entry(D, "data", &e); if (gd_error(D)) r = 1; else { CHECKI(e.field_type, GD_LINCOM_ENTRY); CHECKI(e.fragment_index, 0); CHECKI(e.EN(lincom,n_fields), 1); CHECKF(e.EN(lincom,m)[0], 1); CHECKF(e.EN(lincom,b)[0], 4); CHECKP(e.scalar[0]); CHECKS(e.scalar[0 + GD_MAX_LINCOM], "c"); CHECKI(e.scalar_ind[0 + GD_MAX_LINCOM], 3); gd_free_entry_strings(&e); } gd_close(D); unlink(format); rmdir(filedir); CHECKI(error, GD_E_OK); return r; }
int main(void) { const char *filedir = "dirfile"; const char *format = "dirfile/format"; const char *data = "dirfile/data"; const char *format_data = "data RAW INT32 8\nphase PHASE data 1\n" "div RECIP data 230.\n"; int32_t data_data[256]; int fd, ret, error, n, r = 0; DIRFILE *D; double div[2] = {1093., 3290.}; gd_entry_t E; rmdirfile(); mkdir(filedir, 0777); for (fd = 0; fd < 256; ++fd) data_data[fd] = (int32_t)fd; fd = open(format, O_CREAT | O_EXCL | O_WRONLY, 0666); write(fd, format_data, strlen(format_data)); close(fd); fd = open(data, O_CREAT | O_EXCL | O_WRONLY | O_BINARY, 0666); write(fd, data_data, 256 * sizeof(int32_t)); close(fd); D = gd_open(filedir, GD_RDWR | GD_VERBOSE); ret = gd_alter_crecip(D, "div", "phase", div); error = gd_error(D); n = gd_entry(D, "div", &E); gd_close(D); unlink(data); unlink(format); rmdir(filedir); CHECKI(error,0); CHECKI(n,0); CHECKI(ret,0); CHECKF(E.EN(recip,cdividend)[0], div[0]); CHECKF(E.EN(recip,cdividend)[1], div[1]); CHECKS(E.in_fields[0], "phase"); gd_free_entry_strings(&E); return r; }
BOOLEAN LoadCharacterPortrait( void ) { // this function will load the character's portrait, to be used on portrait button VOBJECT_DESC VObjectDesc; // load it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; if( fCharacterIsMale ) { if ( gIMPMaleValues[ iPortraitNumber ].Enabled == 1 ) { //sprintf( VObjectDesc.ImageFile, "Faces\\%02d.sti", gIMPMaleValues[ iPortraitNumber ].PortraitId ); sprintf( VObjectDesc.ImageFile, "IMPFaces\\%02d.sti", gIMPMaleValues[ iPortraitNumber ].PortraitId ); } } else { if ( gIMPFemaleValues[ iPortraitNumber ].Enabled == 1 ) { //sprintf( VObjectDesc.ImageFile, "Faces\\%02d.sti", gIMPFemaleValues[ iPortraitNumber ].PortraitId ); sprintf( VObjectDesc.ImageFile, "IMPFaces\\%02d.sti", gIMPFemaleValues[ iPortraitNumber ].PortraitId ); } } //FilenameForBPP( pPlayerSelectedFaceFileNames[ iPortraitNumber ] , VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiCHARACTERPORTRAIT)); return( TRUE ); }
BOOLEAN BltVideoObjectOutlineShadowFromIndex(UINT32 uiDestVSurface, UINT32 uiSrcVObject, UINT16 usIndex, INT32 iDestX, INT32 iDestY ) { UINT16 *pBuffer; UINT32 uiPitch; HVOBJECT hSrcVObject; // Lock video surface pBuffer = (UINT16*)LockVideoSurface( uiDestVSurface, &uiPitch ); if ( pBuffer == NULL ) { return( FALSE ); } // Get video object #ifdef _DEBUG gubVODebugCode = DEBUGSTR_BLTVIDEOOBJECTOUTLINESHADOWFROMINDEX; #endif CHECKF( GetVideoObject( &hSrcVObject, uiSrcVObject ) ); if( BltIsClipped( hSrcVObject, iDestX, iDestY, usIndex, &ClippingRect) ) { Blt8BPPDataTo16BPPBufferOutlineShadowClip((UINT16*)pBuffer, uiPitch, hSrcVObject, iDestX, iDestY, usIndex, &ClippingRect ); } else { Blt8BPPDataTo16BPPBufferOutlineShadow((UINT16*)pBuffer, uiPitch, hSrcVObject, iDestX, iDestY, usIndex ); } // Now we have the video object and surface, call the VO blitter function UnLockVideoSurface( uiDestVSurface ); return( TRUE ); }
BOOLEAN InitFlowerButtons() { UINT16 i,j, count; UINT16 usPosY; char sTemp[40]; VOBJECT_DESC VObjectDesc; if( (FLOR_GALLERY_NUMBER_FLORAL_IMAGES - gubCurFlowerIndex) >= 3 ) gubCurNumberOfFlowers = 3; else gubCurNumberOfFlowers = FLOR_GALLERY_NUMBER_FLORAL_IMAGES - gubCurFlowerIndex; gubPrevNumberOfFlowers = gubCurNumberOfFlowers; //the 10 pictures of the flowers count = gubCurFlowerIndex; for(i=0; i<gubCurNumberOfFlowers; i++) { // load the handbullet graphic and add it sprintf( sTemp, "LAPTOP\\Flower_%d.sti", count); VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP(sTemp, VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiFlowerImages[i])); count++; } //the buttons with the flower pictures on them usPosY = FLOR_GALLERY_FLOWER_BUTTON_Y; // usPosX = FLOR_GALLERY_FLOWER_BUTTON_X; count = gubCurFlowerIndex; guiGalleryButtonImage = LoadButtonImage("LAPTOP\\GalleryButtons.sti", -1,0,-1,1,-1 ); for(j=0; j<gubCurNumberOfFlowers; j++) { guiGalleryButton[j] = QuickCreateButton( guiGalleryButtonImage, FLOR_GALLERY_FLOWER_BUTTON_X, usPosY, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH, DEFAULT_MOVE_CALLBACK, (GUI_CALLBACK)BtnGalleryFlowerButtonCallback); SetButtonCursor( guiGalleryButton[j], CURSOR_WWW); MSYS_SetBtnUserData( guiGalleryButton[j], 0, count); SpecifyButtonIcon( guiGalleryButton[j], guiFlowerImages[ j ], 0, 5, 5, FALSE ); usPosY += FLOR_GALLERY_FLOWER_BUTTON_OFFSET_Y; count ++; } //if its the first page, display the 'back' text in place of the 'prev' text on the top left button if( gubCurFlowerIndex == 0 ) SpecifyButtonText( guiFloralGalleryButton[0], sFloristGalleryText[FLORIST_GALLERY_HOME] ); else SpecifyButtonText( guiFloralGalleryButton[0], sFloristGalleryText[FLORIST_GALLERY_PREV] ); //if it is the last page disable the next button if( gubCurFlowerIndex == FLOR_GALLERY_NUMBER_FLORAL_IMAGES-1 ) DisableButton( guiFloralGalleryButton[1] ); else EnableButton( guiFloralGalleryButton[1] ); return(TRUE); }
UINT32 ETRLECompressSubImage( UINT8 * pDest, UINT32 uiDestLen, UINT8 * p8BPPBuffer, UINT16 usWidth, UINT16 usHeight, STCISubImage * pSubImage ) { UINT16 usLoop; UINT32 uiScanLineCompressedSize; UINT32 uiSpaceLeft = uiDestLen; UINT32 uiOffset; UINT8 * pCurrent; CHECKF( DetermineOffset( &uiOffset, usWidth, usHeight, pSubImage->sOffsetX, pSubImage->sOffsetY ) ) pCurrent = p8BPPBuffer + uiOffset; for (usLoop = 0; usLoop < pSubImage->usHeight; usLoop++) { uiScanLineCompressedSize = ETRLECompress( pDest, uiSpaceLeft, pCurrent, pSubImage->usWidth ); if (uiScanLineCompressedSize == 0 ) { // there wasn't enough room to complete the compression! return( 0 ); } // reduce the amount of available space uiSpaceLeft -= uiScanLineCompressedSize; pDest += uiScanLineCompressedSize; // go to the next scanline pCurrent += usWidth; } return( uiDestLen - uiSpaceLeft ); }
int main(void) { const char *filedir = "dirfile"; const char *format = "dirfile/format"; const char *format_data = "const CONST FLOAT64 8.3\n"; double c; int fd, n, error, r = 0; DIRFILE *D; rmdirfile(); mkdir(filedir, 0777); fd = open(format, O_CREAT | O_EXCL | O_WRONLY, 0666); write(fd, format_data, strlen(format_data)); close(fd); D = gd_open(filedir, GD_RDONLY | GD_VERBOSE); n = gd_get_constant(D, "const", GD_FLOAT64, &c); error = gd_error(D); gd_close(D); unlink(format); rmdir(filedir); CHECKI(error, 0); CHECKI(n, 0); CHECKF(c, 8.3); return r; }
BOOLEAN LoadMapBorderGraphics( void ) { // this procedure will load the graphics needed for the map border VOBJECT_DESC VObjectDesc; // will load map border VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; if (iResolution >= _640x480 && iResolution < _800x600) { FilenameForBPP( "INTERFACE\\MBS.sti", VObjectDesc.ImageFile ); } else if (iResolution < _1024x768) { FilenameForBPP( "INTERFACE\\MBS_800x600.sti", VObjectDesc.ImageFile ); } else { FilenameForBPP( "INTERFACE\\MBS_1024x768.sti", VObjectDesc.ImageFile ); } CHECKF( AddVideoObject( &VObjectDesc, &guiMapBorder ) ); return ( TRUE ); }
BOOLEAN DisplayPaletteRep( PaletteRepID aPalRep, UINT8 ubXPos, UINT8 ubYPos, UINT32 uiDestSurface ) { UINT16 us16BPPColor; UINT32 cnt1; UINT8 ubSize, ubType; INT16 sTLX, sTLY, sBRX, sBRY; UINT8 ubPaletteRep; // Create 16BPP Palette CHECKF( GetPaletteRepIndexFromID( aPalRep, &ubPaletteRep ) ); SetFont( LARGEFONT1 ); ubType = gpPalRep[ ubPaletteRep ].ubType; ubSize = gpPalRep[ ubPaletteRep ].ubPaletteSize; for ( cnt1 = 0; cnt1 < ubSize; cnt1++ ) { sTLX = ubXPos + (UINT16)( ( cnt1 % 16 ) * 20 ); sTLY = ubYPos + (UINT16)( ( cnt1 / 16 ) * 20 ); sBRX = sTLX + 20; sBRY = sTLY + 20; us16BPPColor = Get16BPPColor( FROMRGB( gpPalRep[ ubPaletteRep ].r[ cnt1 ], gpPalRep[ ubPaletteRep ].g[ cnt1 ], gpPalRep[ ubPaletteRep ].b[ cnt1 ] ) ); ColorFillVideoSurfaceArea( uiDestSurface, sTLX, sTLY, sBRX, sBRY, us16BPPColor ); } gprintf( ubXPos + ( 16 * 20 ), ubYPos, L"%S", gpPalRep[ ubPaletteRep ].ID ); return( TRUE ); }
bool CCtrlEdit::init() { setKeypadEnabled(true); this->ignoreAnchorPointForPosition(false); this->setAnchorPoint(ccp(m_fArchorPointX, m_fArchorPointY)); this->setPosition(ccp(m_fRealX, m_fRealY)); this->setContentSize(CCSizeMake(m_nWidth, m_nHeight)); m_pTextField = CCtrlTextFieldTTF::textFieldWithPlaceHolder(m_strText.c_str(), CCSize(m_nWidth, m_nHeight), (CCTextAlignment)kCCTextAlignmentLeft, m_strFontName.c_str(), m_nFontSize); CHECKF(m_pTextField); m_pTextField->setColorSpaceHolder(ccGetColor3B(m_nFontColor)); m_pTextField->setContentSize(CCSizeMake(m_nWidth, m_nHeight)); m_pTextField->setAnchorPoint(ccp(0, 0)); m_pTextField->setPosition(ccp(0, 0)); m_pTextField->setDelegate(this); m_pTextField->EventChanged.bind(this, &CCtrlEdit::textChange); addChild(m_pTextField); m_pTrackNode = m_pTextField; int nHeight = static_cast<int>(m_nFontSize * CC_CONTENT_SCALE_FACTOR() * 1.33f); initCursorSprite(nHeight); return true; }
BOOLEAN GetVideoObjectETRLESubregionProperties( UINT32 uiVideoObject, UINT16 usIndex, UINT16 *pusWidth, UINT16 *pusHeight ) { HVOBJECT hVObject; ETRLEObject ETRLEObject; // Get video object #ifdef _DEBUG gubVODebugCode = DEBUGSTR_GETVIDEOOBJECTETRLESUBREGIONPROPERTIES; #endif CHECKF( GetVideoObject( &hVObject, uiVideoObject ) ); CHECKF( GetVideoObjectETRLEProperties( hVObject, &ETRLEObject, usIndex ) ); *pusWidth = ETRLEObject.usWidth; *pusHeight = ETRLEObject.usHeight; return( TRUE ); }
// Deletes all palettes, surfaces and region data BOOLEAN DeleteVideoObject( HVOBJECT hVObject ) { UINT16 usLoop; // Assertions CHECKF( hVObject != NULL ); DestroyObjectPaletteTables(hVObject); // Release palette if ( hVObject->pPaletteEntry != NULL ) { MemFree( hVObject->pPaletteEntry ); // hVObject->pPaletteEntry = NULL; } if ( hVObject->pPixData != NULL ) { MemFree( hVObject->pPixData ); // hVObject->pPixData = NULL; } if ( hVObject->pETRLEObject != NULL ) { MemFree( hVObject->pETRLEObject ); // hVObject->pETRLEObject = NULL; } if ( hVObject->ppZStripInfo != NULL ) { for (usLoop = 0; usLoop < hVObject->usNumberOfObjects; usLoop++) { if (hVObject->ppZStripInfo[usLoop] != NULL) { MemFree( hVObject->ppZStripInfo[usLoop]->pbZChange ); MemFree( hVObject->ppZStripInfo[usLoop] ); } } MemFree( hVObject->ppZStripInfo ); // hVObject->ppZStripInfo = NULL; } if ( hVObject->usNumberOf16BPPObjects > 0) { for( usLoop = 0; usLoop < hVObject->usNumberOf16BPPObjects; usLoop++) { MemFree( hVObject->p16BPPObject[usLoop].p16BPPData ); } MemFree( hVObject->p16BPPObject ); } // Release object MemFree( hVObject ); return( TRUE ); }
BOOLEAN InitializeRegistryKeys(STR lpszAppName, STR lpszRegistryKey) { CHECKF(lpszAppName != NULL); CHECKF(lpszRegistryKey != NULL); //CHECKF(gpszRegistryKey == NULL); //CHECKF(gpszAppName == NULL); //CHECKF(gpszProfileName == NULL); // Note: this will leak the original gpszProfileName, but it // will be freed when the application exits. No assumptions // can be made on how gpszProfileName was allocated. strcpy( gszAppName, lpszAppName); strcpy( gszRegistryKey, lpszRegistryKey ); strcpy( gszProfileName, gszAppName); return(TRUE); }
BOOLEAN RenderPortrait( INT16 sX, INT16 sY ) { // render the portrait of the current picture VOBJECT_DESC VObjectDesc; HVOBJECT hHandle; UINT32 uiGraphicHandle; if( fCharacterIsMale ) { // load it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP( pPlayerSelectedBigFaceFileNames[ iCurrentPortrait ] , VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &uiGraphicHandle)); // show it GetVideoObject(&hHandle, uiGraphicHandle); BltVideoObject(FRAME_BUFFER, hHandle, 0, LAPTOP_SCREEN_UL_X + sX, LAPTOP_SCREEN_WEB_UL_Y + sY , VO_BLT_SRCTRANSPARENCY,NULL); // and kick it's sorry ..umm never mind, outta here DeleteVideoObjectFromIndex( uiGraphicHandle ); } else { // load it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP( pPlayerSelectedBigFaceFileNames[ iCurrentPortrait + 8 ] , VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &uiGraphicHandle)); // show it GetVideoObject(&hHandle, uiGraphicHandle); BltVideoObject(FRAME_BUFFER, hHandle, 0, LAPTOP_SCREEN_UL_X + sX, LAPTOP_SCREEN_WEB_UL_Y + sY , VO_BLT_SRCTRANSPARENCY,NULL); // and kick it's sorry ..umm never mind, outta here DeleteVideoObjectFromIndex( uiGraphicHandle ); } return ( TRUE ); }
BOOLEAN EnterInsuranceInfo() { VOBJECT_DESC VObjectDesc; UINT16 usPosX; InitInsuranceDefaults(); // load the Insurance bullet graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\bullet.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiBulletImage)); //left arrow guiInsPrevButtonImage = LoadButtonImage("LAPTOP\\InsLeftButton.sti", 2,0,-1,1,-1 ); guiInsPrevBackButton = CreateIconAndTextButton( guiInsPrevButtonImage, InsInfoText[INS_INFO_PREVIOUS], INS_FONT_BIG, INS_FONT_COLOR, INS_FONT_SHADOW, INS_FONT_COLOR, INS_FONT_SHADOW, TEXT_CJUSTIFIED, INS_INFO_LEFT_ARROW_BUTTON_X, INS_INFO_LEFT_ARROW_BUTTON_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH, DEFAULT_MOVE_CALLBACK, BtnInsPrevButtonCallback); SetButtonCursor( guiInsPrevBackButton, CURSOR_WWW ); SpecifyButtonTextOffsets( guiInsPrevBackButton, 17, 16, FALSE ); //Right arrow guiInsNextButtonImage = LoadButtonImage("LAPTOP\\InsRightButton.sti", 2,0,-1,1,-1 ); guiInsNextBackButton = CreateIconAndTextButton( guiInsNextButtonImage, InsInfoText[INS_INFO_NEXT], INS_FONT_BIG, INS_FONT_COLOR, INS_FONT_SHADOW, INS_FONT_COLOR, INS_FONT_SHADOW, TEXT_CJUSTIFIED, INS_INFO_RIGHT_ARROW_BUTTON_X, INS_INFO_RIGHT_ARROW_BUTTON_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGH, DEFAULT_MOVE_CALLBACK, BtnInsNextButtonCallback); SetButtonCursor( guiInsNextBackButton, CURSOR_WWW ); SpecifyButtonTextOffsets( guiInsNextBackButton, 18, 16, FALSE ); usPosX = INS_INFO_LINK_START_X; //link to go to the contract page //link to go to the home page MSYS_DefineRegion( &gSelectedInsuranceInfoHomeLinkRegion, usPosX, INS_INFO_LINK_TO_CONTRACT_Y-37, (UINT16)(usPosX + INS_INFO_LINK_TO_CONTRACT_WIDTH), INS_INFO_LINK_TO_CONTRACT_Y+2, MSYS_PRIORITY_HIGH, CURSOR_WWW, MSYS_NO_CALLBACK, SelectInsuranceInfoHomeLinkRegionCallBack); MSYS_AddRegion(&gSelectedInsuranceInfoHomeLinkRegion); usPosX += INS_INFO_LINK_START_OFFSET + INS_INFO_LINK_TO_CONTRACT_WIDTH; MSYS_DefineRegion( &gSelectedInsuranceInfoLinkRegion, usPosX, INS_INFO_LINK_TO_CONTRACT_Y-37, (UINT16)(usPosX + INS_INFO_LINK_TO_CONTRACT_WIDTH), INS_INFO_LINK_TO_CONTRACT_Y+2, MSYS_PRIORITY_HIGH, CURSOR_WWW, MSYS_NO_CALLBACK, SelectInsuranceLinkRegionCallBack); MSYS_AddRegion(&gSelectedInsuranceInfoLinkRegion); gubCurrentInsInfoSubPage = INS_INFO_INFO_TOC; RenderInsuranceInfo(); return(TRUE); }
int main(void) { const char *filedir = "dirfile"; const char *format = "dirfile/format"; int error, ge_error, r = 0; gd_entry_t e; const char *in_fields[2] = {"in1", "in2"}; const double m[2] = {1, 0.3}; const double b[2] = {0, 0.9}; DIRFILE *D; rmdirfile(); D = gd_open(filedir, GD_RDWR | GD_CREAT | GD_VERBOSE); gd_add_phase(D, "new", "in", 3, 0); gd_madd_lincom(D, "new", "meta", 2, in_fields, m, b); error = gd_error(D); /* check */ gd_entry(D, "new/meta", &e); ge_error = gd_error(D); CHECKI(ge_error, 0); if (!r) { CHECKI(e.field_type, GD_LINCOM_ENTRY); CHECKI(e.fragment_index, 0); CHECKI(e.EN(lincom,n_fields), 2); CHECKS(e.in_fields[0], "in1"); CHECKS(e.in_fields[1], "in2"); CHECKF(e.EN(lincom,m)[0], m[0]); CHECKF(e.EN(lincom,m)[1], m[1]); CHECKF(e.EN(lincom,b)[0], b[0]); CHECKF(e.EN(lincom,b)[1], b[1]); CHECKI(e.comp_scal, 0); gd_free_entry_strings(&e); } gd_close(D); unlink(format); rmdir(filedir); CHECKI(error, 0); return r; }
BOOLEAN LoadCharacterPortrait( void ) { // this function will load the character's portrait, to be used on portrait button VOBJECT_DESC VObjectDesc; // load it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP( pPlayerSelectedFaceFileNames[ iPortraitNumber ] , VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiCHARACTERPORTRAIT)); return( TRUE ); }
BOOLEAN LoadMainIndentFrame( void ) { // this procedure will load the activation indent into memory VOBJECT_DESC VObjectDesc; VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\mainprofilepageindent.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiMAININDENT)); return (TRUE); }
BOOLEAN InitBriefingRoomEnterDefaults() { VOBJECT_DESC VObjectDesc; // load the Rust bacground graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; //FilenameForBPP("LAPTOP\\rustbackground.sti", VObjectDesc.ImageFile); FilenameForBPP("BriefingRoom\\background.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiRustBriefingRoomEnterBackGround)); return(TRUE); }