//============================================================================== Drawable* DrawableButton::getCurrentImage() const noexcept { if (isDown()) return getDownImage(); if (isOver()) return getOverImage(); return getNormalImage(); }
void MainMenuScene::initButton() { auto mBackGround = Sprite::create("bg3.png"); mBackGround->setScale(visibleSize.height/mBackGround->getContentSize().height); mBackGround->setAnchorPoint(Vec2(0.5,0.5)); mBackGround->setPosition((origin.x +visibleSize.width)/2, (origin.y +visibleSize.height)/2); addChild(mBackGround); auto mNameSprite = Sprite::create("GameName.png"); mNameSprite->setScale((visibleSize.width/2)/mNameSprite->getContentSize().width); mNameSprite->setAnchorPoint(Vec2(0.5,1)); mNameSprite->setPosition(Vec2((origin.x +visibleSize.width)/2,origin.y + visibleSize.height - 50)); addChild(mNameSprite); auto mRaceButton = MenuItemImage::create("RaceNormal.png","RaceSelected.png",CC_CALLBACK_1(MainMenuScene::menuPlayCallback,this)); mRaceButton->setAnchorPoint(Vec2(0.5,1)); mRaceButton->setScale((visibleSize.width/5)/mRaceButton->getNormalImage()->getContentSize().width); Vec2 tRaceButtonPos = Vec2((origin.x +visibleSize.width)/2,(origin.y + visibleSize.height)/2 + mRaceButton->getNormalImage()->getContentSize().height/3); mRaceButton->setPosition(tRaceButtonPos); mSoundButton = MenuItemImage::create("SettingNormal.png", "SettingSelected.png", CC_CALLBACK_1(MainMenuScene::menuSoundCallback, this)); mSoundButton->setAnchorPoint(Vec2(0, 1)); mSoundButton->setScale((visibleSize.width / 5) / mRaceButton->getNormalImage()->getContentSize().width); Vec2 tSoundButtonPos = Vec2(mRaceButton->getPosition().x + 20, mRaceButton->getPosition().y - 120); mSoundButton->setPosition(tSoundButtonPos); auto mRateButton = MenuItemImage::create("SettingNormal.png", "SettingSelected.png", CC_CALLBACK_1(MainMenuScene::menuRateCallback, this)); mRateButton->setAnchorPoint(Vec2(1, 1)); mRateButton->setScale((visibleSize.width / 5) / mRaceButton->getNormalImage()->getContentSize().width); Vec2 tRateButtonPos = Vec2(mRaceButton->getPosition().x - 20, mRaceButton->getPosition().y - 120); mRateButton->setPosition(tRateButtonPos); cocos2d::Vector<MenuItem*> items; items.pushBack(mRaceButton); items.pushBack(mSoundButton); items.pushBack(mRateButton); auto menu = Menu::createWithArray(items); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); }
Image ImageButton::getCurrentImage() const { if (isDown() || getToggleState()) return getDownImage(); if (isOver()) return getOverImage(); return getNormalImage(); }
//============================================================================== const Drawable* DrawablePad::getCurrentImage() const throw() { if (isDown()) return getDownImage(); if (isOver()) return getOverImage(); return getNormalImage(); }
void CMenuItemWithDesciption::MouseMove(Point pos) { if(isVisible() && getNormalImage()->getBoundingBox().containsPoint(convertToNodeSpace(pos))) { m_IsCursorUnder = true; } else { m_IsCursorUnder = false; m_CursorOverTime = 0.0f; } }
void HeroIcon::setHero( Hero::Pointer hero ) { assert( !_hero ); assert( hero ); _hero = hero; _hero->observerHealth.add( _ID, [this]( float current, float health ) { float percent = current / health * 100.f; _timer->setPercentage( percent ); bool enabled = _hero->current_state().get_name() != Hero::State::state_death; unsigned char opacity = enabled ? 255 : 128; setEnabled( enabled ); getNormalImage()->setOpacity( opacity ); _timer->setOpacity( opacity ); } ); }
void HeroIcon::showCancel( bool mode ) { if( _cancelImage ) { _cancelImage->setVisible( mode ); } if( _hero ) { _hero->runEvent( mode ? "onselect" : "ondeselect" ); } std::string image = mode ? _selectedHero : _unselectedHero; xmlLoader::setProperty( getNormalImage(), xmlLoader::kImage, image ); //auto frame = ImageManager::shared().spriteFrame( image ); //if( frame ) // static_cast<Sprite*>(getNormalImage())->setSpriteFrame( frame ); }
void DrawableButton::buttonStateChanged() { repaint(); Drawable* imageToDraw = nullptr; float opacity = 1.0f; if (isEnabled()) { imageToDraw = getCurrentImage(); } else { imageToDraw = getToggleState() ? disabledImageOn : disabledImage; if (imageToDraw == nullptr) { opacity = 0.4f; imageToDraw = getNormalImage(); } } if (imageToDraw != currentImage) { removeChildComponent (currentImage); currentImage = imageToDraw; if (currentImage != nullptr) { currentImage->setInterceptsMouseClicks (false, false); addAndMakeVisible (currentImage); resized(); } } if (currentImage != nullptr) currentImage->setAlpha (opacity); }
bool HeroIcon::init( const std::string & heroname, const ccMenuCallback & callback ) { do { CC_BREAK_IF( !MenuItemImageWithText::initWithNormalImage( empty, empty, empty, empty, empty, callback ) ); std::string cancel = k::resourceGameSceneFolder + "icon_x_10.png"; std::string normal = k::resourceGameSceneFolder + heroname + "_2" + ext; std::string selected = k::resourceGameSceneFolder + heroname + "_3" + ext; std::string disabled = k::resourceGameSceneFolder + heroname + "_1" + ext; _unselectedHero = normal; _selectedHero = selected; std::string timer = k::resourceGameSceneFolder + "hero_progressbar1" + ext; std::string timer_bg = k::resourceGameSceneFolder + "hero_progressbar2" + ext; setImageNormal( normal ); setImageDisabled( disabled ); auto progress = Node::create(); Sprite * image = ImageManager::sprite( timer ); CC_BREAK_IF( !image ); _timer = ProgressTimer::create( image ); CC_BREAK_IF( !_timer ); image->setAnchorPoint( Point::ANCHOR_BOTTOM_LEFT ); _timer->setType( ProgressTimer::Type::BAR ); _timer->setMidpoint( Point( 0.0f, 0.5f ) ); _timer->setBarChangeRate( Point( 1, 0 ) ); _timer->setPercentage( 0 ); progress->addChild( ImageManager::sprite( timer_bg ) ); progress->addChild( _timer, 1 ); addChild( progress ); Point pos; pos.x = getNormalImage()->getContentSize().width / 2; pos.y = -image->getContentSize().height * 0.7f; progress->setPosition( pos ); if( 0 ) { _cancelImage = ImageManager::sprite( cancel ); getNormalImage()->addChild( _cancelImage ); _cancelImage->setPosition( Point( getNormalImage()->getContentSize() ) - Point( 5, 5 ) ); _cancelImage->setVisible( false ); _cancelImage->setScale( 1.5f ); auto s1 = ScaleTo::create( 0.4f, 1.2f ); auto s2 = ScaleTo::create( 0.4f, 1.0f ); auto d = DelayTime::create( 1 ); auto s = Sequence::create( s1, s2, d, nullptr ); auto action = RepeatForever::create( EaseInOut::create( s, 0.5f ) ); _cancelImage->runAction( action ); } return true; } while( false ); return false; }
void comboUC::paintStatusImage(HDC hdc) { if( isFocused() ) m_uButtonState |= UCSTATE_FOCUSED; else m_uButtonState &= ~ UCSTATE_FOCUSED; if( !isEnabled() ) m_uButtonState |= UCSTATE_DISABLED; else m_uButtonState &= ~ UCSTATE_DISABLED; Gdiplus::Graphics grap(hdc); RECT rcSrc = {0}; if( (m_uButtonState & UCSTATE_DISABLED) != 0 ) { if (getDisabledImage(rcSrc)) { gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc); return; } //if( !m_sDisabledImage.IsEmpty() ) { // if( !DrawImage(hDC, (LPCTSTR)m_sDisabledImage) ) m_sDisabledImage.Empty(); // else return; //} } else if( (m_uButtonState & UCSTATE_PUSHED) != 0 ) { if (getPushedImage(rcSrc)) { gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc); return; } //if( !m_sPushedImage.IsEmpty() ) { // if( !DrawImage(hDC, (LPCTSTR)m_sPushedImage) ) m_sPushedImage.Empty(); // else return; //} } else if( (m_uButtonState & UCSTATE_HOT) != 0 ) { if (getHotImage(rcSrc)) { gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc); return; } //if( !m_sHotImage.IsEmpty() ) { // if( !DrawImage(hDC, (LPCTSTR)m_sHotImage) ) m_sHotImage.Empty(); // else return; //} } else if( (m_uButtonState & UCSTATE_FOCUSED) != 0 ) { if (getFocusedImage(rcSrc)) { gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc); return; } //if( !m_sFocusedImage.IsEmpty() ) { // if( !DrawImage(hDC, (LPCTSTR)m_sFocusedImage) ) m_sFocusedImage.Empty(); // else return; //} } if (getNormalImage(rcSrc)) { gtc::drawer::drawImage(grap, m_pImage, m_rcItem, rcSrc); } //if( !m_sNormalImage.IsEmpty() ) { // if( !DrawImage(hDC, (LPCTSTR)m_sNormalImage) ) m_sNormalImage.Empty(); // else return; //} }
void DrawableButton::paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown) { Rectangle imageSpace; if (style == ImageOnButtonBackground) { const int insetX = getWidth() / 4; const int insetY = getHeight() / 4; imageSpace.setBounds (insetX, insetY, getWidth() - insetX * 2, getHeight() - insetY * 2); getLookAndFeel().drawButtonBackground (g, *this, getBackgroundColour(), isMouseOverButton, isButtonDown); } else { g.fillAll (getBackgroundColour()); const int textH = (style == ImageAboveTextLabel) ? jmin (16, proportionOfHeight (0.25f)) : 0; const int indentX = jmin (edgeIndent, proportionOfWidth (0.3f)); const int indentY = jmin (edgeIndent, proportionOfHeight (0.3f)); imageSpace.setBounds (indentX, indentY, getWidth() - indentX * 2, getHeight() - indentY * 2 - textH); if (textH > 0) { g.setFont ((float) textH); g.setColour (Colours::black.withAlpha (isEnabled() ? 1.0f : 0.4f)); g.drawFittedText (getButtonText(), 2, getHeight() - textH - 1, getWidth() - 4, textH, Justification::centred, 1); } } g.setImageResamplingQuality (Graphics::mediumResamplingQuality); g.setOpacity (1.0f); const Drawable* imageToDraw = 0; if (isEnabled()) { imageToDraw = getCurrentImage(); } else { imageToDraw = getToggleState() ? disabledImageOn : disabledImage; if (imageToDraw == 0) { g.setOpacity (0.4f); imageToDraw = getNormalImage(); } } if (imageToDraw != 0) { if (style == ImageRaw) { imageToDraw->draw (g, 1.0f); } else { imageToDraw->drawWithin (g, imageSpace.getX(), imageSpace.getY(), imageSpace.getWidth(), imageSpace.getHeight(), RectanglePlacement::centred, 1.0f); } } }
const Drawable* MidiPad::getCurrentImage() const throw() { return getNormalImage(); }
//============================================================================== void DrawablePad::paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown) { const int insetX = getWidth() / 4; const int insetY = getHeight() / 4; Rectangle imageSpace; imageSpace.setBounds (insetX, insetY, getWidth() - insetX * 2, getHeight() - insetY * 2); drawButtonBackground (g, *this, getBackgroundColour(), isMouseOverButton, isButtonDown); g.setOpacity (1.0f); const Drawable* imageToDraw = 0; if (isEnabled()) { imageToDraw = getCurrentImage(); } else { imageToDraw = getToggleState() ? disabledImageOn : disabledImage; if (imageToDraw == 0) { g.setOpacity (0.4f); imageToDraw = getNormalImage(); } } if (imageToDraw != 0) { g.setImageResamplingQuality (Graphics::highResamplingQuality); imageToDraw->drawWithin (g, imageSpace.getX(), imageSpace.getY(), imageSpace.getWidth(), imageSpace.getHeight(), RectanglePlacement::centred, 1.0f); } float fontsize = jmin ((float)(proportionOfWidth(0.2f)),(float)(proportionOfHeight(0.15f))); if (fontsize < 5.0) fontsize=5.0; g.setFont (Font (fontsize, Font::bold)); g.setColour (getBackgroundColour().contrasting(0.8f)); g.drawText (Label, proportionOfWidth (0.0447f), proportionOfHeight (0.0499f), proportionOfWidth (0.9137f), proportionOfHeight (0.1355f), Justification::centred, true); if (showdot && ! hex) { g.setFont (Font (fontsize*0.9f, Font::plain)); String xy; if (showx && showy) xy = T("x:") + String((int)(x*127.1)) + T(" y:") + String((int)(y*127.1)); else if (showx) xy = T("x:") + String((int)(x*127.1)); else if (showy) xy = T("y:") + String((int)(y*127.1)); g.drawText (xy, proportionOfWidth (0.0447f), proportionOfHeight (0.8057f), proportionOfWidth (0.9137f), proportionOfHeight (0.1355f), Justification::centred, true); float diameter = jmin ((float)(proportionOfHeight(0.125f)), (float)(proportionOfWidth(0.5f))); g.setColour (Colour (0x88faa52a)); g.fillEllipse ((float)(proportionOfWidth(x)) - diameter*0.5f, (float)(proportionOfHeight(1.0f-y)) - diameter*0.5f, diameter, diameter); g.setColour (Colour (0x99a52a88)); g.drawEllipse ((float)(proportionOfWidth(x)) - diameter*0.5f, (float)(proportionOfHeight(1.0f-y)) - diameter*0.5f, diameter, diameter, diameter*0.1f); } }