void ScrollArea::init(std::string skinName) { setOpaque(mOpaque); setUpButtonScrollAmount(2); setDownButtonScrollAmount(2); setLeftButtonScrollAmount(2); setRightButtonScrollAmount(2); if (instances == 0) { for (int f = 0; f < 9; f ++) { background.grid[f] = nullptr; vMarker.grid[f] = nullptr; vMarkerHi.grid[f] = nullptr; vBackground.grid[f] = nullptr; hBackground.grid[f] = nullptr; } // +++ here probably need move background from static if (skinName == "") skinName = "scroll_background.xml"; if (theme) { theme->loadRect(background, skinName, "scroll_background.xml"); theme->loadRect(vMarker, "scroll.xml", ""); theme->loadRect(vMarkerHi, "scroll_highlighted.xml", "scroll.xml"); theme->loadRect(vBackground, "scroll_vbackground.xml", ""); theme->loadRect(hBackground, "scroll_hbackground.xml", ""); } for (int i = 0; i < 2; i ++) { Skin *skin = nullptr; if (theme) skin = theme->load(buttonFiles[i], "scrollbuttons.xml"); if (skin) { const ImageRect &rect = skin->getBorder(); for (int f = UP; f < BUTTONS_DIR; f ++) { if (rect.grid[f]) rect.grid[f]->incRef(); buttons[f][i] = rect.grid[f]; } if (i == 0) { mShowButtons = (skin->getOption("showbuttons", 1) == 1); mMarkerSize = skin->getOption("markersize", 0); mScrollbarSize = skin->getOption("scrollbarsize", 12); } } else { for (int f = UP; f < BUTTONS_DIR; f ++) buttons[f][i] = nullptr; } if (theme) theme->unload(skin); } } mScrollbarWidth = mScrollbarSize; instances++; }
void ScrollArea::init() { // Draw background by default setOpaque(true); setUpButtonScrollAmount(2); setDownButtonScrollAmount(2); setLeftButtonScrollAmount(2); setRightButtonScrollAmount(2); if (instances == 0) { // Load the background skin Image *textbox = Theme::getImageFromTheme("deepbox.png"); const int bggridx[4] = {0, 3, 28, 31}; const int bggridy[4] = {0, 3, 28, 31}; int a = 0, x, y; for (y = 0; y < 3; y++) { for (x = 0; x < 3; x++) { background.grid[a] = textbox->getSubImage( bggridx[x], bggridy[y], bggridx[x + 1] - bggridx[x] + 1, bggridy[y + 1] - bggridy[y] + 1); background.grid[a]->setAlpha(config.getFloatValue("guialpha")); a++; } } textbox->decRef(); // Load vertical scrollbar skin Image *vscroll = Theme::getImageFromTheme("vscroll_grey.png"); Image *vscrollHi = Theme::getImageFromTheme("vscroll_highlight.png"); int vsgridx[4] = {0, 4, 7, 11}; int vsgridy[4] = {0, 4, 15, 19}; a = 0; for (y = 0; y < 3; y++) { for (x = 0; x < 3; x++) { vMarker.grid[a] = vscroll->getSubImage( vsgridx[x], vsgridy[y], vsgridx[x + 1] - vsgridx[x], vsgridy[y + 1] - vsgridy[y]); vMarkerHi.grid[a] = vscrollHi->getSubImage( vsgridx[x], vsgridy[y], vsgridx[x + 1] - vsgridx[x], vsgridy[y + 1] - vsgridy[y]); vMarker.grid[a]->setAlpha(config.getFloatValue("guialpha")); vMarkerHi.grid[a]->setAlpha(config.getFloatValue("guialpha")); a++; } } vscroll->decRef(); vscrollHi->decRef(); buttons[UP][0] = Theme::getImageFromTheme("vscroll_up_default.png"); buttons[DOWN][0] = Theme::getImageFromTheme("vscroll_down_default.png"); buttons[LEFT][0] = Theme::getImageFromTheme("hscroll_left_default.png"); buttons[RIGHT][0] = Theme::getImageFromTheme("hscroll_right_default.png"); buttons[UP][1] = Theme::getImageFromTheme("vscroll_up_pressed.png"); buttons[DOWN][1] = Theme::getImageFromTheme("vscroll_down_pressed.png"); buttons[LEFT][1] = Theme::getImageFromTheme("hscroll_left_pressed.png"); buttons[RIGHT][1] = Theme::getImageFromTheme("hscroll_right_pressed.png"); } instances++; }