void CheckSlider(Slider* MySlider){ if (MySlider->ort){ if(DetectRectangle(MySlider->posx-DetectOutline, MySlider->posy - MySlider->size, MySlider->posx+1+DetectOutline, MySlider->posy)){ if(tsy != (MySlider->posy - MySlider->value)){ MySlider->value = MySlider->posy - tsy; DisplaySlider(MySlider); MySlider->scaledvalue = ((float)(MySlider->value)/MySlider->size)*255; } } } else { if(DetectRectangle(MySlider->posx, MySlider->posy - DetectOutline, MySlider->posx+MySlider->size, MySlider->posy+1+DetectOutline)){ if(tsx != (MySlider->posx + MySlider->value)){ MySlider->value = (tsx - MySlider->posx); DisplaySlider(MySlider); MySlider->scaledvalue = ((float)(MySlider->value)/MySlider->size)*255; } } } }
/* * Creates Slider * 0 < posx < 320 * 0 < posy < 240 * 0 < size * ort = hrz or vrt */ void StartSlider(Slider* MySlider, uint16 posx, uint16 posy, uint16 size, enum orientation ort){ MySlider->visible = 1; /* Initialized to shown */ MySlider->posx = posx; MySlider->posy = posy; MySlider->size = size; MySlider->ort = ort; MySlider->value = 0; MySlider->scaledvalue = 0; DisplaySlider(MySlider); }
/* Show the widget */ void GUI_ScrollBar::Display(bool full_redraw) { SDL_Rect framerect; // SDL_Rect src, dst; if(slider_y > 0) { framerect.x = area.x; framerect.y = area.y + button_height; framerect.w = SCROLLBAR_WIDTH; framerect.h = slider_y; SDL_FillRect(surface, &framerect, track_base_c); // Draw Border framerect.x = area.x; framerect.y = area.y + button_height; framerect.w = SCROLLBAR_WIDTH; framerect.h = 1; SDL_FillRect(surface, &framerect, track_border_c); framerect.x = area.x; framerect.y = area.y + button_height; framerect.w = 1; framerect.h = slider_y; SDL_FillRect(surface, &framerect, track_border_c); framerect.x = area.x + SCROLLBAR_WIDTH - 1; framerect.y = area.y + button_height; framerect.w = 1; framerect.h = slider_y; SDL_FillRect(surface, &framerect, track_border_c); } DisplaySlider(); if(slider_y + slider_length < track_length) { framerect.x = area.x; framerect.y = area.y + button_height + slider_y + slider_length; framerect.w = SCROLLBAR_WIDTH; framerect.h = track_length - (slider_y + slider_length); SDL_FillRect(surface, &framerect, track_base_c); // Draw Border framerect.x = area.x; framerect.y = area.y + area.h - button_height - 1; framerect.w = SCROLLBAR_WIDTH; framerect.h = 1; SDL_FillRect(surface, &framerect, track_border_c); framerect.x = area.x; framerect.y = area.y + button_height + slider_y + slider_length; framerect.w = 1; framerect.h = track_length - slider_y - slider_length; SDL_FillRect(surface, &framerect, track_border_c); framerect.x = area.x + SCROLLBAR_WIDTH - 1; framerect.y = area.y + button_height + slider_y + slider_length; framerect.w = 1; framerect.h = track_length - slider_y - slider_length; SDL_FillRect(surface, &framerect, track_border_c); } DisplayChildren(); screen->update(area.x,area.y,area.w,area.h); return; }