winamp/Src/Wasabi/api/wnd/wndclass/scbkgwnd.h
2024-09-24 14:54:57 +02:00

464 lines
5.1 KiB
C++

#ifndef __SCRLBKGWND_H
#define __SCRLBKGWND_H
#include <tataki/canvas/canvas.h>
#include <tataki/bitmap/autobitmap.h>
#include <api/wnd/wndclass/labelwnd.h>
#include <api/wnd/wndclass/scrollbar.h>
#include <api/wnd/wndclass/sepwnd.h>
#define SCRLBKGWND_PARENT LabelWnd
/**
Class
@short
@author Nullsoft
@ver 1.0
@see
*/
class ScrlBkgWnd : public SCRLBKGWND_PARENT {
protected:
/**
Method
@see
@ret
@param
*/
ScrlBkgWnd();
public:
/**
Method
@see
@ret
@param
*/
virtual ~ScrlBkgWnd();
/**
Method
@see
@ret
@param
*/
virtual int onInit();
/**
Method
@see
@ret
@param
*/
virtual int onPaint(Canvas *c);
/**
Method
@see
@ret
@param
*/
virtual void drawBackground(Canvas *canvas);
/**
Method
@see
@ret
@param
*/
virtual int onEraseBkgnd(HDC dc);
/**
Method
@see
@ret
@param
*/
virtual int childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2);
/**
Method
@see
@ret
@param
*/
virtual int onResize();
/**
Method
@see
@ret
@param
*/
virtual void getClientRect(RECT *r);
// virtual void getNonClientRect(RECT *r);
/**
Method
@see
@ret
@param
*/
virtual int getHeaderHeight();
virtual void timerCallback (int id);
/**
Method
@see
@ret
@param
*/
virtual void onHScrollToggle(int set);
/**
Method
@see
@ret
@param
*/
virtual void onVScrollToggle(int set);
/**
Method
@see
@ret
@param
*/
virtual void onSetVisible(int show);
/**
Method
@see
@ret
@param
*/
virtual int wantHScroll() { return 1; }
/**
Method
@see
@ret
@param
*/
virtual int wantVScroll() { return 1; }
/**
Method
@see
@ret
@param
*/
void makeWindowOverlayMask(api_region *r);
/**
Method
@see
@ret
@param
*/
SkinBitmap *getBgBitmap(void);
/**
Method
@see
@ret
@param
*/
void setBgBitmap(const wchar_t *b);
/**
Method
@see
@ret
@param
*/
void setBgColor(ARGB32 rgb);
/**
Method
@see
@ret
@param
*/
virtual ARGB32 getBgColor(void);
/**
Method
@see
@ret
@param
*/
virtual int getContentsWidth(); // not safe to call getclientrect!
/**
Method
@see
@ret
@param
*/
virtual int getContentsHeight(); // not safe to call getclientrect!
/**
Method
@see
@ret
@param
*/
void setLineHeight(int h);
/**
Method
@see
@ret
@param
*/
int getLinesPerPage();
/**
Method
@see
@ret
@param
*/
int getScrollX();
/**
Method
@see
@ret
@param
*/
int getScrollY();
/**
Method
@see
@ret
@param
*/
int getScrollbarWidth();
/**
Method
@see
@ret
@param
*/
virtual void scrollToY(int y, int signal=TRUE);
/**
Method
@see
@ret
@param
*/
virtual void scrollToX(int x, int signal=TRUE);
protected:
virtual void onScrollY(int y) { }
/**
Method
@see
@ret
@param
*/
void setSlidersPosition();
/**
Method
@see
@ret
@param
*/
int needDoubleBuffer();
/**
Method
@see
@ret
@param
*/
bool needHScroll();
/**
Method
@see
@ret
@param
*/
bool needVScroll();
/**
Method
@see
@ret
@param
*/
int getMaxScrollY();
/**
Method
@see
@ret
@param
*/
int getMaxScrollX();
/**
Method
@see
@ret
@param
*/
void updateScrollY(bool smooth=false);
/**
Method
@see
@ret
@param
*/
void updateScrollX(bool smooth=false);
/**
Method
@see
@ret
@param
*/
void smoothScrollToY(int y);
/**
Method
@see
@ret
@param
*/
void smoothScrollToX(int x);
/**
Method
@see
@ret
@param
*/
void updateVScroll(int y);
/**
Method
@see
@ret
@param
*/
void updateHScroll(int x);
AutoSkinBitmap bmp;
int dbbuffer;
bool inDestroy;
ScrollBar hScroll;
ScrollBar vScroll;
SepWnd hSep;
SepWnd vSep;
ARGB32 bgColor;
int scrollX;
int scrollY;
bool needSetSliders;
bool wantsep;
bool wantTileBg;
int lineHeight;
float smoothScrollYInc, smoothScrollXInc;
float smoothScrollYCur, smoothScrollXCur;
int smoothScrollYTimerCount, smoothScrollXTimerCount;
int smoothYTimer, smoothXTimer;
/**
Method
@see
@ret
@param
*/
void killSmoothYTimer();
/**
Method
@see
@ret
@param
*/
void killSmoothXTimer();
double lastratio;
RECT smsqr;
/**
Method
@see
@ret
@param
*/
void _setSlidersPosition();
int in_set_slider_position;
};
#endif