예제 #1
0
	ResDB_p LoadStdWidgets( const char * pImagePath, const SurfaceFactory_p& pFactory )
	{
		const int HSLIDER_BTN_OFS 		= 1;
		const int VSLIDER_BTN_OFS 		= HSLIDER_BTN_OFS + 19;
		const int SLIDER_OFS 			= VSLIDER_BTN_OFS + 19;
		const int SLIDER_BACK_OFS		= SLIDER_OFS + 10;
		const int RESIZE_BUTTON_OFS 	= SLIDER_BACK_OFS + 13;
		const int CHECKBOX_OFS 			= RESIZE_BUTTON_OFS + 22;
		const int RADIOBUTTON_OFS 		= CHECKBOX_OFS + 13;
		const int BUTTON_OFS			= RADIOBUTTON_OFS + 13;
		const int PLATE_OFS				= BUTTON_OFS + 10;
		const int SPLITS_AND_FRAME_OFS	= PLATE_OFS + 10;
		const int COMBOBOX_OFS			= SPLITS_AND_FRAME_OFS + 10;
		const int LISTENTRY_OFS			= COMBOBOX_OFS + 35;
		const int SORT_ARROW_OFS		= LISTENTRY_OFS + 9;
		const int SMILEY_OFS			= SORT_ARROW_OFS + 8;
		const int TILES_OFS				= 256+192;

		Surface_p pSurface = loadSurface( pImagePath, pFactory );
		if( !pSurface )
			return 0;

		BlockSkin_p	pHScrollbarBwdButtonSkin = BlockSkin::createClickable( pSurface, Size(17,17), Coord(1,HSLIDER_BTN_OFS), Size(19,0), Border(3) );
		pHScrollbarBwdButtonSkin->setContentPadding(Border(4));

		BlockSkin_p	pHScrollbarFwdButtonSkin = BlockSkin::createClickable( pSurface, Size(17,17), Coord(77,HSLIDER_BTN_OFS), Size(19,0), Border(3) );
		pHScrollbarFwdButtonSkin->setContentPadding(Border(4));

		BlockSkin_p	pVScrollbarBwdButtonSkin = BlockSkin::createClickable( pSurface, Size(17,17), Coord(1,VSLIDER_BTN_OFS), Size(19,0), Border(3) );
		pVScrollbarBwdButtonSkin->setContentPadding(Border(4));

		BlockSkin_p	pVScrollbarFwdButtonSkin = BlockSkin::createClickable( pSurface, Size(17,17), Coord(77,VSLIDER_BTN_OFS), Size(19,0), Border(3) );
		pVScrollbarFwdButtonSkin->setContentPadding(Border(4));

		BlockSkin_p	pScrollbarHandleSkin = BlockSkin::createClickable( pSurface, Size(8,8), Coord(1,SLIDER_OFS), Size(10,0), Border(2) );
		pScrollbarHandleSkin->setContentPadding(Border(3));

		BlockSkin_p	pScrollbarBackSkin = BlockSkin::createStatic( pSurface, Rect(1,SLIDER_BACK_OFS,5,5), Border(2) );
		pScrollbarBackSkin->setContentPadding(Border(2));

//		WgBlocksetPtr pResizeButtonBlocks = WgBlockset::CreateFromRow(pSurface, Rect(1,RESIZE_BUTTON_OFS,86,20), 4, 2, WG_OPAQUE);
//		pResizeButtonBlocks->setFrame(Border(3));

		BlockSkin_p	pCheckboxIconSkin = BlockSkin::createClickSelectableWidget( pSurface, Size(11,11), Coord(1,CHECKBOX_OFS), Size(13,0), Border(2) );
		pCheckboxIconSkin->setContentPadding(Border(3));

		BlockSkin_p	pRadiobuttonIconSkin = BlockSkin::createClickSelectableWidget( pSurface, Size(11,11), Coord(1,RADIOBUTTON_OFS), Size(13,0) );
		pRadiobuttonIconSkin->setContentPadding(Border(3));

		BlockSkin_p pButtonSkin = BlockSkin::createClickable( pSurface, Size(8,8), Coord(1,BUTTON_OFS), Size(10,0), Border(3) );
		pButtonSkin->setContentPadding(Border(4));
		pButtonSkin->setContentShift( StateEnum::Pressed, Coord(2,2) );

		BlockSkin_p pHSplitSkin = BlockSkin::createStatic(pSurface, Rect(1,SPLITS_AND_FRAME_OFS,8,2), Border(0) );

		BlockSkin_p pVSplitBlocks = BlockSkin::createStatic(pSurface, Rect(11,SPLITS_AND_FRAME_OFS,2,8), Border(0) );

		BlockSkin_p pFrameSkin = BlockSkin::createClickable( pSurface, Size(8,8), Coord(1, SPLITS_AND_FRAME_OFS), Size(10,0), Border(2) );
		pFrameSkin->setContentPadding(Border(3));

//		WgBlocksetPtr pComboboxBlocks = WgBlockset::CreateFromRow(pSurface, Rect(1,COMBOBOX_OFS,98,20), 4, 2, WG_OPAQUE);
//		pComboboxBlocks->setFrame(Border(1,1,20,1));
//		pComboboxBlocks->setPadding(Border(2,2,21,2));

		BlockSkin_p pListEntrySkin = BlockSkin::createClickSelectable( pSurface, Size(8,6), Coord(1,LISTENTRY_OFS), Size(10,0), Border(1) );
		pListEntrySkin->setContentPadding(Border(4));

		BlockSkin_p pSortArrowSkin = BlockSkin::createClickSelectable( pSurface, Size(11,6), Coord(1,SORT_ARROW_OFS), Size(13,0), Border(0) );

		BlockSkin_p pSmileyIconSkin = BlockSkin::createClickSelectable( pSurface, Size(12,12), Coord(1, SMILEY_OFS), Size(14,0), Border(0) );


		BlockSkin_p pBgCheckeredGreySkin = BlockSkin::createStatic( pSurface, Rect(0,TILES_OFS,64,64) );
		pBgCheckeredGreySkin->setTiledCenter(true);
		pBgCheckeredGreySkin->optimizeRenderMethods();

		BlockSkin_p pBgBlueGradientSkin = BlockSkin::createStatic( pSurface, Rect(1*64,TILES_OFS,64,64) );
		pBgBlueGradientSkin->optimizeRenderMethods();


//		ColorsetPtr pSelectionColors = Colorset::create( Color(0x0), Color(0x40FFFFFF), Color(0x80FFFFFF), Color(0x40000000), Color(0x0) );

		BlockSkin_p pPlateSkin = BlockSkin::createClickable( pSurface, Size(8,8), Coord(1,PLATE_OFS), Size(10,0), Border(3) );
		pPlateSkin->setContentPadding(Border(4));
		pPlateSkin->optimizeRenderMethods();

		ResDB_p pDB = ResDB::create();

		pDB->addSkin( "listentry", pListEntrySkin );
		pDB->addSkin( "plate", pPlateSkin );
		pDB->addSkin( "sortarrow", pSortArrowSkin );
		pDB->addSkin( "smiley", pSmileyIconSkin );

		// Create standard button

		Button_p pButton = Button::create();
		pButton->setSkin( pButtonSkin );
		pDB->addWidget( "button", pButton );

		// Create standard plate

		Image_p pPlate = Image::create();
		pPlate->setSkin( pPlateSkin );
		pDB->addWidget( "plate", pPlate );

		// Create standard checkbox

		CheckBoxPtr pCheckbox = CheckBox::create();
		pCheckbox->Icon()->set( pCheckboxIconSkin );
		pDB->addWidget( "checkbox", pCheckbox );

		// Create standard radiobutton

		RadioButtonPtr pRadiobutton = RadioButton::create();
		pRadiobutton->Icon()->set( pRadiobuttonIconSkin );
		pDB->addWidget( "radiobutton", pRadiobutton );

		// Create standard horizontal scrollbar

		Scrollbar_p pHScrollbar = Scrollbar::create();
		pHScrollbar->setSkins( pScrollbarBackSkin, pScrollbarHandleSkin, pHScrollbarBwdButtonSkin, pHScrollbarFwdButtonSkin );
		pDB->addWidget( "hscrollbar", pHScrollbar );

		// Create standard vertical scrollbar

		Scrollbar_p pVScrollbar = Scrollbar::create();
		pVScrollbar->setSkins( pScrollbarBackSkin, pScrollbarHandleSkin, pVScrollbarBwdButtonSkin, pVScrollbarFwdButtonSkin );
		pDB->addWidget( "vscrollbar", pVScrollbar );

		// Create standard menubar
/*
		Menubar * pMenubar = new Menubar();
		pMenubar->SetBgSource( pPlateBlocks );
		pDB->addWidget( "menubar", pMenubar );
*/
		// Create Background bitmaps

		Image_p pBgCheckeredGrey = Image::create();
		pBgCheckeredGrey->setSkin( pBgCheckeredGreySkin );
		pDB->addWidget( "bg_checkered_grey", pBgCheckeredGrey );

		Image_p pBgBlueGradient = Image::create();
		pBgBlueGradient->setSkin( pBgBlueGradientSkin );
		pDB->addWidget( "bg_blue_gradient", pBgBlueGradient );

		// Create standard menu

		Menu_p pMenu = Menu::create();
		pMenu->setSkin( pPlateSkin, 16, 16 );
		pMenu->setSeparatorSkin( pHSplitSkin, Border(1) );
		pMenu->setCheckBoxSkin( pCheckboxIconSkin );
		pMenu->setRadioButtonSkin( pRadiobuttonIconSkin );
		pMenu->setScrollbarSkins( pScrollbarBackSkin, pScrollbarHandleSkin, pVScrollbarBwdButtonSkin, pVScrollbarFwdButtonSkin );
		pMenu->setEntrySkin( pPlateSkin );
		pDB->addWidget( "menu", pMenu );

		// Create standard combobox
/*
		Combobox * pCombobox = new Combobox();
		pCombobox->SetSource( pComboboxBlocks );
		pDB->addWidget( "combobox", pCombobox );
*/
		// Create standard view

		{
			ScrollPanel_p pView = ScrollPanel::create();

			Widget_p pHScrollbar = pDB->cloneWidget( "hscrollbar" );
			Widget_p pVScrollbar = pDB->cloneWidget( "vscrollbar" );

			if( pHScrollbar )
			{
				Scrollbar_p pH = Scrollbar::cast(pHScrollbar);
				pView->setHorizontalScrollbar( pH );
			}
			if( pVScrollbar )
			{
				Scrollbar_p pV = Scrollbar::cast(pVScrollbar);
				pView->setVerticalScrollbar( pV );
			}
			pView->setSkin( pBgCheckeredGreySkin );
			pView->setCornerSkin( pPlateSkin );
			pDB->addWidget( "view", pView );
		}

		return pDB;
	}