123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- //-----------------------------------------------------------------------------
- // Copyright (c) 2012 GarageGames, LLC
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to
- // deal in the Software without restriction, including without limitation the
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- // sell copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- // IN THE SOFTWARE.
- //-----------------------------------------------------------------------------
- #include "platform/platform.h"
- #include "gui/buttons/guiToolboxButtonCtrl.h"
- #include "console/console.h"
- #include "console/engineAPI.h"
- #include "gfx/gfxDevice.h"
- #include "gfx/gfxDrawUtil.h"
- #include "console/consoleTypes.h"
- #include "gui/core/guiCanvas.h"
- #include "gui/core/guiDefaultControlRender.h"
- IMPLEMENT_CONOBJECT(GuiToolboxButtonCtrl);
- ConsoleDocClass( GuiToolboxButtonCtrl,
- "@brief Unimplemented GUI control meant to interact with Toolbox.\n\n"
- "For Torque 3D editors only, soon to be deprecated\n\n"
- "@internal"
- );
- //-------------------------------------
- GuiToolboxButtonCtrl::GuiToolboxButtonCtrl()
- {
- INIT_ASSET(NormalBitmap);
- INIT_ASSET(LoweredBitmap);
- INIT_ASSET(HoverBitmap);
- setMinExtent(Point2I(16,16));
- setExtent(48, 48);
- mButtonType = ButtonTypeRadio;
- mTipHoverTime = 100;
-
- }
- //-------------------------------------
- void GuiToolboxButtonCtrl::initPersistFields()
- {
- INITPERSISTFIELD_IMAGEASSET(NormalBitmap, GuiToolboxButtonCtrl, "");
- INITPERSISTFIELD_IMAGEASSET(LoweredBitmap, GuiToolboxButtonCtrl, "");
- INITPERSISTFIELD_IMAGEASSET(HoverBitmap, GuiToolboxButtonCtrl, "");
- Parent::initPersistFields();
- }
- //-------------------------------------
- bool GuiToolboxButtonCtrl::onWake()
- {
- if (! Parent::onWake())
- return false;
- setActive( true );
-
- setNormalBitmap( getNormalBitmap() );
- setLoweredBitmap( getLoweredBitmap() );
- setHoverBitmap( getHoverBitmap() );
- return true;
- }
- //-------------------------------------
- void GuiToolboxButtonCtrl::onSleep()
- {
- Parent::onSleep();
- }
- //-------------------------------------
- void GuiToolboxButtonCtrl::inspectPostApply()
- {
- // if the extent is set to (0,0) in the gui editor and appy hit, this control will
- // set it's extent to be exactly the size of the normal bitmap (if present)
- Parent::inspectPostApply();
- if ((getWidth() == 0) && (getHeight() == 0) && mNormalBitmap)
- {
- setExtent(mNormalBitmap->getWidth(), mNormalBitmap->getHeight());
- }
- }
- //-------------------------------------
- void GuiToolboxButtonCtrl::setNormalBitmap( StringTableEntry bitmapName )
- {
- _setNormalBitmap(bitmapName);
-
- if(!isAwake())
- return;
-
- setUpdate();
- }
- void GuiToolboxButtonCtrl::setLoweredBitmap( StringTableEntry bitmapName )
- {
- _setLoweredBitmap(bitmapName);
-
- if(!isAwake())
- return;
-
- setUpdate();
- }
- void GuiToolboxButtonCtrl::setHoverBitmap( StringTableEntry bitmapName )
- {
- _setHoverBitmap(bitmapName);
- if(!isAwake())
- return;
- setUpdate();
- }
- //-------------------------------------
- void GuiToolboxButtonCtrl::onRender(Point2I offset, const RectI& updateRect)
- {
- // Only render the state rect (hover/down) if we're active
- if (mActive)
- {
- RectI r(offset, getExtent());
- if ( mDepressed || mStateOn )
- renderStateRect( mLoweredBitmap , r );
- else if ( mHighlighted )
- renderStateRect( mHoverBitmap , r );
- }
- // Now render the image
- if( mNormalBitmap )
- {
- renderButton(mNormalBitmap, offset, updateRect );
- return;
- }
- Point2I textPos = offset;
- if( mDepressed )
- textPos += Point2I(1,1);
- // Make sure we take the profile's textOffset into account.
- textPos += mProfile->mTextOffset;
- GFX->getDrawUtil()->setBitmapModulation( mProfile->mFontColor );
- renderJustifiedText(textPos, getExtent(), mButtonText);
- }
- void GuiToolboxButtonCtrl::renderStateRect( GFXTexHandle &texture, const RectI& rect )
- {
- if (texture)
- {
- GFX->getDrawUtil()->clearBitmapModulation();
- GFX->getDrawUtil()->drawBitmapStretch( texture, rect );
- }
- }
- //------------------------------------------------------------------------------
- void GuiToolboxButtonCtrl::renderButton(GFXTexHandle &texture, Point2I &offset, const RectI& updateRect)
- {
- if (texture)
- {
- Point2I finalOffset = offset;
- finalOffset.x += ( ( getWidth() / 2 ) - ( texture.getWidth() / 2 ) );
- finalOffset.y += ( ( getHeight() / 2 ) - ( texture.getHeight() / 2 ) );
- GFX->getDrawUtil()->clearBitmapModulation();
- GFX->getDrawUtil()->drawBitmap(texture, finalOffset);
- renderChildControls( offset, updateRect);
- }
- }
- DEF_ASSET_BINDS(GuiToolboxButtonCtrl, NormalBitmap);
- DEF_ASSET_BINDS(GuiToolboxButtonCtrl, LoweredBitmap);
- DEF_ASSET_BINDS(GuiToolboxButtonCtrl, HoverBitmap);
|