コード例 #1
0
LandscapeToolsPanel::LandscapeToolsPanel(LandscapeToolsPanelDelegate *newDelegate, const Rect & rect)
    :   UIControl(rect)
    ,   delegate(newDelegate)
    ,   selectedTool(NULL)
    ,   selectedBrushTool(NULL)
{
    ControlsFactory::CustomizeDialogFreeSpace(this);
    
    selectionPanel = NULL;

    brushIcon = new UIControl(Rect(0, 0, ControlsFactory::TOOLS_HEIGHT, ControlsFactory::TOOLS_HEIGHT));
    brushIcon->AddEvent(UIControl::EVENT_TOUCH_UP_INSIDE, Message(this, &LandscapeToolsPanel::OnBrushTool));
    brushIcon->GetBackground()->SetDrawType(UIControlBackground::DRAW_SCALE_PROPORTIONAL);
    AddControl(brushIcon);
    
    
    sizeSlider = CreateSlider(Rect(rect.dx - SLIDER_WIDTH - TEXTFIELD_WIDTH,
                                   0, SLIDER_WIDTH, ControlsFactory::TOOLS_HEIGHT / 2));
    sizeSlider->AddEvent(UIControl::EVENT_VALUE_CHANGED, Message(this, &LandscapeToolsPanel::OnSizeChanged));
    AddControl(sizeSlider);
    
    strengthSlider = CreateSlider(Rect(rect.dx - SLIDER_WIDTH - TEXTFIELD_WIDTH, 
                                       ControlsFactory::TOOLS_HEIGHT / 2, SLIDER_WIDTH, ControlsFactory::TOOLS_HEIGHT / 2));
    strengthSlider->AddEvent(UIControl::EVENT_VALUE_CHANGED, Message(this, &LandscapeToolsPanel::OnStrengthChanged));
    AddControl(strengthSlider);
    
    AddSliderHeader(sizeSlider, LocalizedString(L"landscapeeditor.size"));
    AddSliderHeader(strengthSlider, LocalizedString(L"landscapeeditor.strength"));
}
コード例 #2
0
ファイル: Menu.cpp プロジェクト: Leystryku/mentranium
void cMenu::InitMenu()
{
	//Create Tabs.
	CreateTab("Aim");
	CreateTab("Gun");
	CreateTab("ESP");
	CreateTab("Misc");
	CreateTab("Chat");

	//Create Check Boxes.
	CreateCheck("Aim", "Aimbot", &M_AimEnable);
	CreateCheck("Aim", "Silent Aim", &M_Aim_Silent);
	CreateCheck("Aim", "Teamkill", &M_Aim_TeamKill);
	CreateCheck("Aim", "Kill Players", &M_Aim_KillPlayer);
	CreateCheck("Aim", "Kill NPCs", &M_Aim_KillNPC);
	CreateCheck("Aim", "Triggerbot", &M_TriggerBot);


	CreateCheck("Gun", "Auto Pistol", &M_AutoPistol);
	CreateCheck("Gun", "Auto Reload", &M_AutoReload);
	CreateCheck("Gun", "No Spread", &M_NoSpread);

	CreateCheck("ESP", "Enable", &M_ESP);
	CreateCheck("ESP", "Name", &M_ESP_Name);
	CreateCheck("ESP", "Health", &M_ESP_Health);
	CreateCheck("ESP", "Health Bar", &M_ESP_HealthBar);
	CreateCheck("ESP", "3D Boxes", &M_ESP_3D);
	CreateCheck("ESP", "NPCs", &M_ESP_NPCs);
	CreateCheck("ESP", "Players", &M_ESP_Players);
	CreateCheck("ESP", "Weapons", &M_ESP_Weapons);
	CreateCheck("ESP", "View ESP", &M_ESP_ViewESP);

	CreateCheck("Misc", "Name Changer", &M_NameChanger);
	CreateCheck("Misc", "Bunny Hop", &M_Bhop);
	CreateCheck("Misc", "Freeze Hack", &M_FreezeHack);
	CreateCheck("Misc", "Fake Lag", &M_FakeLag);
	CreateCheck("Misc", "Fast Join", &M_FastJoin);
	CreateCheck("Misc", "Disconnect Spam", &M_DisconnectSpam);
	CreateCheck("Misc", "Speedhake", &M_Speed);

	CreateCheck("Chat", "Voice Imitator", &M_VoiceChatImitator );
	CreateCheck("Chat", "Text Imitator", &M_TextChatImitator );
	CreateCheck("Chat", "Team-Text", &M_TextChatTeam );
	CreateCheck("Chat", "Chat Spam", &M_ChatSpam );
	CreateCheck("Chat", "Voice Spam", &M_VoiceChatSpam );

	//Create Sliders
	CreateSlider("Misc", "Speed", 100, &S_Speed);
	CreateSlider("Misc", "Crosshair", 5, &S_CrossHair);

	//Create Text Boxes
	CreateTextBox("ESP", "Custom ESP", &T_CustomESP);
	CreateTextBox("Chat", "Chat Spam", &T_ChatSpam);

	//M_ClientSpectate

}
コード例 #3
0
LandscapeToolsPanelCustomColors::LandscapeToolsPanelCustomColors(LandscapeToolsPanelDelegate *newDelegate, const Rect & rect)
    :LandscapeToolsPanel(rect)
{
    delegate = newDelegate;
    selectedTool = NULL;
    selectedBrushTool = NULL;
	
    selectionPanel = NULL;

	brushIcon = new UIControl(Rect(0, 0, ControlsFactory::TOOLS_HEIGHT, ControlsFactory::TOOLS_HEIGHT));
	brushIcon->GetBackground()->SetDrawType(UIControlBackground::DRAW_SCALE_PROPORTIONAL);

	sizeSlider = CreateSlider(Rect(rect.dx - SLIDER_WIDTH - TEXTFIELD_WIDTH,
                                   0, SLIDER_WIDTH, ControlsFactory::TOOLS_HEIGHT / 2));
    
    strengthSlider = CreateSlider(Rect(rect.dx - SLIDER_WIDTH - TEXTFIELD_WIDTH, 
                                       ControlsFactory::TOOLS_HEIGHT / 2, SLIDER_WIDTH, ControlsFactory::TOOLS_HEIGHT / 2));

}
コード例 #4
0
ファイル: Scale.cpp プロジェクト: Soth1985/Survive
RenderQueue* BREW::CreateScaleDrawable( SharedPtr<const Scale> scale ) const {
	sf::Color trough_color( GetProperty<sf::Color>( "TroughColor", scale ) );
	sf::Color slider_color( GetProperty<sf::Color>( "SliderColor", scale ) );
	sf::Color border_color( GetProperty<sf::Color>( "BorderColor", scale ) );
	int border_color_shift( GetProperty<int>( "BorderColorShift", scale ) );
	float trough_thickness( GetProperty<float>( "TroughWidth", scale ) );
	float border_width( GetProperty<float>( "BorderWidth", scale ) );

	RenderQueue* queue( new RenderQueue );

	Scale::Orientation orientation = scale->GetOrientation();

	sf::FloatRect slider_rect = scale->GetSliderRect();

	if( orientation == Scale::HORIZONTAL ) {
		// Trough
		queue->Add(
			Renderer::Get().CreateRect(
				sf::FloatRect(
					slider_rect.width / 2.f,
					( scale->GetAllocation().height - trough_thickness ) / 2.f,
					scale->GetAllocation().width - slider_rect.width,
					trough_thickness
				),
				trough_color
			)
		);
	}
	else {
		// Trough
		queue->Add(
			Renderer::Get().CreateRect(
				sf::FloatRect(
					( scale->GetAllocation().width - trough_thickness ) / 2.f,
					slider_rect.height / 2.f,
					trough_thickness,
					scale->GetAllocation().height - slider_rect.height
				),
				trough_color
			)
		);
	}

	// Slider
	queue->Add( CreateSlider( slider_rect, slider_color, border_width, border_color, border_color_shift ) );

	return queue;
}
コード例 #5
0
int
vtkTimeSliderActor::RenderOverlay(vtkViewport *viewport)
{
    bool stateChanged = false;
    if(this->SliderActor != 0)
        stateChanged = this->GetMTime() > this->SliderActor->GetMTime()
#ifdef CREATE_POLYDATA_IN_SCREEN_SPACE
        // If we created the polydata in screen space then we need to recreate it
        // each time the viewport changes.
                       || viewport->GetMTime() > this->GetMTime();
#else
        ;
#endif

    if(stateChanged || this->SliderActor == NULL)
    {
        DestroySlider();
        CreateSlider(viewport);
    }

    return this->SliderActor->RenderOverlay(viewport);
}
コード例 #6
0
void
FormWindow::CreateDefSlider(CtrlDef& def)
{
	Slider* ctrl = CreateSlider(def.GetText(),
	def.GetX(),
	def.GetY(),
	def.GetW(),
	def.GetH(),
	def.GetID(),
	def.GetParentID());


	ctrl->SetAltText(def.GetAltText());
	ctrl->SetEnabled(def.IsEnabled());
	ctrl->SetBackColor(def.GetBackColor());
	ctrl->SetForeColor(def.GetForeColor());

	ctrl->SetActive(def.GetActive());
	ctrl->SetOrientation(def.GetOrientation());
	ctrl->SetFillColor(def.GetActiveColor());
	ctrl->SetBorderColor(def.GetBorderColor());
	ctrl->SetBorder(def.GetBorder());
	ctrl->SetStyle(def.GetStyle());
	ctrl->SetTransparent(def.GetTransparent());
	ctrl->SetHidePartial(def.GetHidePartial());
	ctrl->SetNumLeds(def.GetNumLeds());

	ctrl->SetMargins(def.GetMargins());
	ctrl->SetTextInsets(def.GetTextInsets());
	ctrl->SetCellInsets(def.GetCellInsets());
	ctrl->SetCells(def.GetCells());
	ctrl->SetFixedWidth(def.GetFixedWidth());
	ctrl->SetFixedHeight(def.GetFixedHeight());

	Font* f = FontMgr::Find(def.GetFont());
	if (f) ctrl->SetFont(f);
}
コード例 #7
0
ファイル: slider.cpp プロジェクト: euler0/Helium
 virtual void RecreateWidget() { CreateSlider(); }
コード例 #8
0
ファイル: ObjectRendering.c プロジェクト: ecuk/AlephOne
/**
 *  This assembles all of the controls, and invokes the callbacks, usually locally defined.
 */
void WidgetsAssemble()
{
    SurfaceDraw_create();    
    
    //This button cycles through pages of controls
    pagePrevButton = CreateButton(PIC_PAGE1TEXT,0,panelBottom, farLeft,panelTop, Page_prev_set, Page_get,1);
    pageNextButton = CreateButton(PIC_PAGE2TEXT,farRight,panelBottom, 1.0,panelTop, Page_next_set, Page_get,1);

    loopRepeatButton = CreateButton(PIC_LOOPREPEAT, farLeft, panelBottom, 0.28, panelTop, LoopRepeat_set, LoopRepeat_get, 1);
    loopCountInButton = CreateButton(PIC_LOOPRECORD, 0.28, panelBottom, 0.38, panelTop, LoopCountIn_set, LoopCountIn_get, 1);
    loopFadeSlider = CreateSlider(PIC_LOOPCLEAR, 0.38, panelBottom, 0.60, panelTop, LoopFade_set, LoopFade_get);
    loopFeedSlider = CreateSlider(PIC_LOOPPLAY, 0.60, panelBottom, 0.80, panelTop, LoopFeed_set, LoopFeed_get);
    copyButton = CreateButton(PIC_COPY, 0.80, panelBottom, farRight, panelTop, Copy_set, Copy_get, 1);
    
    intonationSlider = CreateSlider(PIC_SCALETEXT,farLeft,panelBottom, 0.5,panelTop, Intonation_set, NULL);
    rootNoteSlider = CreateSlider(PIC_ROOTNOTETEXT,0.5,panelBottom, farRight,panelTop, RootNote_set, NULL);
    
    reverbSlider = CreateSlider(PIC_REVERBTEXT,farLeft,panelBottom, 0.30,panelTop, Reverb_set, Reverb_get);
    detuneSlider = CreateSlider(PIC_DETUNETEXT,0.30,panelBottom, 0.48,panelTop, Detune_set, Detune_get);
    timbreSlider = CreateSlider(PIC_TIMBRETEXT,0.48,panelBottom, 0.66,panelTop, Timbre_set, Timbre_get);
    distortionSlider = CreateSlider(PIC_DISTORTIONTEXT,0.66,panelBottom, farRight,panelTop, Distortion_set, Distortion_get);
    
    legatoButton = CreateButton(PIC_LEGATOTEXT, farLeft, panelBottom, 0.28, panelTop, Legato_set, Legato_get, 2);
    polyButton = CreateButton(PIC_POLYTEXT, 0.28, panelBottom, 0.5, panelTop, Poly_set, Poly_get, 3);
    baseVolumeSlider = CreateSlider(PIC_BASEVOLTEXT, 0.5,panelBottom, farRight,panelTop, Vel_set, Vel_get);
    
    octAutoButton = CreateButton(PIC_OCTTEXT,farLeft,panelBottom,farLeft+0.2,panelTop, OctAuto_set, OctAuto_get, 2);
    float edge = farLeft+0.2;
    rootDown12Button = CreateButton(PIC_ROOTDOWN12, edge, panelBottom, edge+0.1, panelTop, RootDown12_set, NULL, 1);
    edge += 0.1;
    rootUp12Button   = CreateButton(PIC_ROOTUP12, edge, panelBottom, edge+0.1, panelTop, RootUp12_set, NULL, 1);
    edge += 0.1;
    rootDownButton = CreateButton(PIC_ROOTDOWN, edge, panelBottom, edge+0.1, panelTop, RootDown_set, NULL, 1);
    edge += 0.1;
    rootUpButton   = CreateButton(PIC_ROOTUP, edge, panelBottom, edge+0.1, panelTop, RootUp_set, NULL, 1);
    edge += 0.1;
    baseSlider = CreateSlider(PIC_BASENOTETEXT,edge,panelBottom, farRight,panelTop, NoteDiff_set, NoteDiff_get);    
    
    initialSnapButton = CreateButton(PIC_INITIALSNAPTEXT, farLeft, panelBottom, 0.25, panelTop, Snap_set, Snap_get, 2);
    snapSpeedSlider = CreateSlider(PIC_SNAPSPEEDTEXT, 0.25, panelBottom, 0.48, panelTop, SnapSpeed_set, SnapSpeed_get);
    sensitivitySlider = CreateSlider(PIC_SENSITIVITY, 0.48, panelBottom, 0.78, panelTop, Sensitivity_set, Sensitivity_get);
    engineButton = CreateButton(PIC_ENGINETEXT, 0.78, panelBottom, farRight, panelTop, Engine_set, NULL,2);
    
    widthSlider = CreateSlider(PIC_WIDTHTEXT,farLeft,panelBottom, 0.5,panelTop, Cols_set, Cols_get);
    heightSlider = CreateSlider(PIC_HEIGHTTEXT,0.5,panelBottom, farRight,panelTop, Rows_set, Rows_get);
    
    scaleControlButton = CreateButton(PIC_SCALEBUTTONTEXT, farLeft, panelBottom, 0.28, panelTop, Scale_set, Scale_get, 2);
    scaleControl = ScaleControl_create(0, 0, 1, panelBottom);
    scaleToggleButton = CreateButton(PIC_SCALETOGGLETEXT,0.28,panelBottom, 0.68,panelTop, ScaleToggle_set,ScaleToggle_get,1);    
    scaleCommitButton = CreateButton(PIC_SCALEFRETDEFAULTTEXT,0.68,panelBottom, 0.88,panelTop, ScaleFretDefaults_set,ScaleFretDefaults_get,1);

    midiChannelSlider = CreateSlider(PIC_MIDIBASETEXT, farLeft,panelBottom, 0.33,panelTop, MidiBase_set, MidiBase_get);    
    midiChannelSpanSlider = CreateSlider(PIC_MIDISPANTEXT, 0.33,panelBottom, 0.66,panelTop, MidiSpan_set, MidiSpan_get);    
    midiBendSlider = CreateSlider(PIC_MIDIBENDTEXT, 0.66,panelBottom, farRight,panelTop, MidiBend_set, MidiBend_get);
   
    Page_next_set(pageNextButton, 0);
    Page_next_set(pageNextButton, 0);
    
    Engine_set(engineButton,1);    
    ScaleControl_defaults(NULL);
    Legato_set(legatoButton,1);
    
    loopRepeatButton->val = 1;
    loopCountInButton->val = 0;
    //loopCountInButton->rect->isActive = 0;
    
    //Render the help Overlay
    helpOverlay = WidgetTree_add(farLeft,panelBottom-0.025,farLeft + 0.2,panelBottom);
    helpOverlay->ctx = NULL;
    helpOverlay->render = Help_Render;
    
    ChannelOccupancyControl_create(0.7,0.05, 0.95,0.3);    
}
コード例 #9
0
ファイル: CMix_Buss.cpp プロジェクト: eriser/koblo_software-1
void CMix_Buss::Init()
{
	// Create the main pane
	mpPane = ge::IPane::Create();
	mpPane->SetSize(gMix_Bus);
	mpPane->SetBackgroundColour(ge::SRGB(200,200,200));
	
	// Top label
	CreateBitmap(ge::IControl::giNoID, IDB_Back_Mix_Buss_Lable, ge::SPos(0, 0));
	
	//--------------------------------------------
	// Text label
	ge::IText* pText = CreateDisplay(	giCtr_Mix_Buss_Text+ miCtrl_Offset, 
												ge::SPos(8, 24),  
												ge::SSize(48, 12), 
												CreateFont(Generic128, IDB_Minix_Tight, ge::SRGB(204, 204, 204)), true);

	pText->SetHorzAlignment(ge::IText::HorzAlignLeft);
	pText->SetClicksOutsideAsSuccess();
	
	char psz[32];
	sprintf(psz, "Bus %d", miID+1);
	pText->SetText(psz);
	
	
	//--------------------------------------------
	// Track Aux/ Insert setup
	mpMix_Buss_AUX_Insert = new CMix_Buss_AUX_Insert(this, GetGUI());
	mpMix_Buss_AUX_Insert->SetInfo(miID, miTimerID);
	mpMix_Buss_AUX_Insert->Init();
	mpPane->AddControl(mpMix_Buss_AUX_Insert->GetPane(), ge::SPos(0, 54));
	
	// Byttom part with slider
	CreateBitmap(ge::IControl::giNoID, IDB_Back_Mix_Buss_Volume, ge::SPos(0, 184));
	
//	mpSelected_Back_Drop	= CreateBitmap(ge::IControl::giNoID, IDB_Back_Track_Info_Big_Selected, ge::SPos(0, 0));
//	mpSelected_Back_Drop->SetVisible(false);


	// Show insert button
	Create2StateButton(giCtr_Mix_Buss_Show_Insert_Button	+ miCtrl_Offset,	IDB_Button_AUX_Insert,	ge::SPos(36, 0), true);

	PreparePopups();
	CreatePop(giCtr_Mix_Buss_Output_Popup+ miCtrl_Offset, IDB_Invisible_Button_16_64, mpOutput_Menu, ge::SPos(3, 255));
	
	// Volume slider & display
	CreateSlider(giCtr_Mix_Buss_Volume_Slider				+ miCtrl_Offset, ge::SPos(88-64 , 21+184),ge::SSize(16,110), IDB_Slider_Handle_Volume);
	CreateDisplay( giCtr_Mix_Buss_Volume_Slider_Display		+ miCtrl_Offset, ge::SPos(4, 350),  ge::SSize(56, 12), CreateFont(Generic128, IDB_AxelTight, ge::SRGB(0, 255, 0)));
	
	
	Create2StateButton(giCtr_Mix_Buss_Arm_Button			+ miCtrl_Offset, IDB_Button_Arm_Vertical, ge::SPos(3, 102+184), true);
	Create2StateButton(giCtr_Mix_Buss_Mute_Button			+ miCtrl_Offset, IDB_Button_Mute_Vertical, ge::SPos(3,102+16+184), true);
	Create2StateButton(giCtr_Mix_Buss_Solo_Button			+ miCtrl_Offset, IDB_Button_Solo_Vertical, ge::SPos(3,102+16+15+184), true); 
	
	// Output meter, Left
	mpMeterOutL = CreatePeakMeter(ge::IControl::giNoID, ge::SPos(46, 215), 120, ge::IPeakMeter::Up);
	FindPane(mpMeterOutL)->CreateBitmap(ge::IControl::giNoID, IDB_Meter_Off_Left, ge::SPos(0, 0));
	// Output meter, Right
	mpMeterOutR = CreatePeakMeter(ge::IControl::giNoID, ge::SPos(54, 215), 120, ge::IPeakMeter::Up);
	FindPane(mpMeterOutR)->CreateBitmap(ge::IControl::giNoID, IDB_Meter_Off_Right, ge::SPos(0, 0));

	//mpPan = CreatePanner(giCtrl_Lopp_Start, ge::IControl::giNoID, NULL, IDB_Button_Pan_Handle, ge::SPos(3, 188), ge::SPos(0, 0), ge::SSize(59, 0), NULL);
	//mpPan->SetDirectMouseXlat();
	
	// Panner 
	CreatePanner(
		giCtr_Mix_Buss_Pan  + miCtrl_Offset, ge::IControl::giNoID,
		NULL, IDB_Button_Pan_Handle,
		ge::SPos(3, 188), 
		ge::SPos(0, 0),
		ge::SSize(59, 0),
		NULL
	);
//	pPanner->SetDirectMouseXlat(true);
//	pPanner->SetJumpToMouseClickPos(true);
	
}
コード例 #10
0
LandscapeToolsPanelHeightmap::LandscapeToolsPanelHeightmap(LandscapeToolsPanelDelegate *newDelegate, const Rect & rect)
    :   LandscapeToolsPanel(newDelegate, rect)
{
    Rect sizeRect(rect.dx - TEXTFIELD_WIDTH, 
                  0, TEXTFIELD_WIDTH, ControlsFactory::TOOLS_HEIGHT / 2);
    sizeValue = CreateTextField(sizeRect);
    AddControl(sizeValue);
    
    Rect strengthRect(sizeRect);
    strengthRect.y = sizeRect.y + sizeRect.dy;
    strengthValue = CreateTextField(strengthRect);
    AddControl(strengthValue);
    
    Rect lineRect;
    lineRect.x = strengthSlider->GetRect().x + strengthSlider->GetRect().dx/2;
    lineRect.dx = 2;
    lineRect.y = strengthSlider->GetRect().y - 2;
    lineRect.dy = strengthSlider->GetRect().dy + 4;
    line = ControlsFactory::CreateLine(lineRect);
    AddControl(line);

    showGrid = CreateCkeckbox(Rect(0, ControlsFactory::TOOLS_HEIGHT, ControlsFactory::TOOLS_HEIGHT/2, ControlsFactory::TOOLS_HEIGHT/2), 
                              LocalizedString(L"landscapeeditor.showgrid"));
    
    float32 x = 0;
    float32 y = ControlsFactory::TOOLS_HEIGHT + ControlsFactory::TOOLS_HEIGHT/2.f;
    relative = CreateCkeckbox(Rect(x, y, ControlsFactory::TOOLS_HEIGHT/2.f, ControlsFactory::TOOLS_HEIGHT/2.f), 
                              LocalizedString(L"landscapeeditor.relative"));
    x += (ControlsFactory::TOOLS_HEIGHT/2.f + OFFSET + TEXT_WIDTH);
    average = CreateCkeckbox(Rect(x, y, ControlsFactory::TOOLS_HEIGHT/2.f, ControlsFactory::TOOLS_HEIGHT/2.f), 
                              LocalizedString(L"landscapeeditor.average"));
    
    x += (ControlsFactory::TOOLS_HEIGHT/2.f + OFFSET + TEXT_WIDTH);
    absoluteDropper = CreateCkeckbox(Rect(x, y, ControlsFactory::TOOLS_HEIGHT/2.f, ControlsFactory::TOOLS_HEIGHT/2.f), 
                             LocalizedString(L"landscapeeditor.absolutedropper"));

    Rect heightRect;
    heightRect.x = showGrid->GetRect().x + showGrid->GetRect().dx + TEXT_WIDTH + OFFSET;
    heightRect.y = ControlsFactory::TOOLS_HEIGHT;
    heightRect.dx = TEXTFIELD_WIDTH;
    heightRect.dy = average->GetRect().dy;
    heightValue = CreateTextField(Rect(heightRect));
    heightValue->SetText(L"0");
    AddControl(heightValue);
    
    heightRect.x = heightRect.x + heightRect.dx + ControlsFactory::OFFSET/2.f;
    heightRect.dx = TEXT_WIDTH;
    
    UIStaticText *textControl = new UIStaticText(heightRect);
    textControl->SetText(LocalizedString(L"landscapeeditor.height"));
    textControl->SetFont(ControlsFactory::GetFontLight());
    textControl->SetAlign(ALIGN_VCENTER | ALIGN_LEFT);
    AddControl(textControl);
    SafeRelease(textControl);
    
    averageStrength = CreateSlider(Rect(rect.dx - SLIDER_WIDTH, heightRect.y, 
                                        SLIDER_WIDTH, ControlsFactory::TOOLS_HEIGHT / 2));
    averageStrength->AddEvent(UIControl::EVENT_VALUE_CHANGED, Message(this, &LandscapeToolsPanelHeightmap::OnAverageSizeChanged));
    AddControl(averageStrength);
    AddSliderHeader(averageStrength, LocalizedString(L"landscapeeditor.averagestrength"));

    
    dropperTool = new LandscapeTool(-1, LandscapeTool::TOOL_DROPPER, "~res:/LandscapeEditor/SpecialTools/dropper.png");
    dropperTool->size = 1.0f;
    dropperTool->height = prevHeightValue = 0.f;
    
    Rect dropperRect = brushIcon->GetRect();
    dropperRect.x = (dropperRect.x + dropperRect.dx + ControlsFactory::OFFSET);
    dropperIcon = new UIControl(dropperRect);
    dropperIcon->AddEvent(UIControl::EVENT_TOUCH_UP_INSIDE, Message(this, &LandscapeToolsPanelHeightmap::OnDropperTool));
    dropperIcon->GetBackground()->SetDrawType(UIControlBackground::DRAW_SCALE_PROPORTIONAL);
    dropperIcon->SetSprite(dropperTool->sprite, 0);
    AddControl(dropperIcon);
    

    copypasteTool = new LandscapeTool(-1, LandscapeTool::TOOL_COPYPASTE, "~res:/LandscapeEditor/SpecialTools/copypaste.png");
    
    Rect copypasteRect = dropperRect;
    copypasteRect.x = (copypasteRect.x + copypasteRect.dx + ControlsFactory::OFFSET);
    copypasteIcon = new UIControl(copypasteRect);
    copypasteIcon->AddEvent(UIControl::EVENT_TOUCH_UP_INSIDE, Message(this, &LandscapeToolsPanelHeightmap::OnCopypasteTool));
    copypasteIcon->GetBackground()->SetDrawType(UIControlBackground::DRAW_SCALE_PROPORTIONAL);
    copypasteIcon->SetSprite(copypasteTool->sprite, 0);
    AddControl(copypasteIcon);
    
    copypasteRect.x = (copypasteRect.x + copypasteRect.dx + ControlsFactory::OFFSET);
    copypasteRect.dx = copypasteRect.dy = ControlsFactory::TOOLS_HEIGHT / 2;
    copyHeightmap = CreateCkeckbox(copypasteRect, L"Height");
    copypasteRect.y += copypasteRect.dy;
    copyTilemask = CreateCkeckbox(copypasteRect, L"Tilemask");
    
    sizeValue->SetText(Format(L"%.3f", LandscapeTool::SizeHeightMax()));
    strengthValue->SetText(Format(L"%.3f", LandscapeTool::StrengthHeightMax()));
    
    relative->SetChecked(true, false);
    average->SetChecked(false, false);
    absoluteDropper->SetChecked(false, false);

    sizeSlider->SetMinMaxValue(0.f, LandscapeTool::SizeHeightMax());
    sizeSlider->SetValue(LandscapeTool::DefaultSizeHeight());

    strengthSlider->SetMinMaxValue(-LandscapeTool::StrengthHeightMax(), LandscapeTool::StrengthHeightMax());
    strengthSlider->SetValue(LandscapeTool::DefaultStrengthHeight());
    
    averageStrength->SetMinMaxValue(0.f, 1.f);
    averageStrength->SetValue(0.5f);
    
    copyHeightmap->SetChecked(true, false);    
    copyTilemask->SetChecked(true, false);    
}