CComponentsItem/Form: add var for real item position

If items are used in forms it can be usefully to have a variable
which contains the real position on screen.
This can happen e.g. if an item contains separate render methods, because within forms
usual x/y values related to form dimensions and be converted.
This commit is contained in:
2013-04-10 17:49:48 +02:00
parent 546b04b846
commit 62efe2cb59
3 changed files with 13 additions and 2 deletions

View File

@@ -32,7 +32,7 @@
#include <string> #include <string>
#include <driver/pictureviewer/pictureviewer.h> #include <driver/pictureviewer/pictureviewer.h>
// #define DEBUG_CC //#define DEBUG_CC
class CComponents class CComponents
{ {
@@ -98,6 +98,9 @@ class CComponentsItem : public CComponents
protected: protected:
int cc_item_type; int cc_item_type;
int cc_item_index; int cc_item_index;
///contains real position and dimensions on screen,
int cc_item_xr, cc_item_yr;
void hideCCItem(bool no_restore = false); void hideCCItem(bool no_restore = false);
void paintInit(bool do_save_bg); void paintInit(bool do_save_bg);
@@ -105,6 +108,9 @@ class CComponentsItem : public CComponents
public: public:
CComponentsItem(); CComponentsItem();
///sets real position on screen. Use this, if item contains own render methods and item is added to a form
virtual void setRealPos(const int& xr, const int& yr){cc_item_xr = xr; cc_item_yr = yr;};
virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES) = 0; virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES) = 0;
virtual void hide(bool no_restore = false); virtual void hide(bool no_restore = false);

View File

@@ -233,7 +233,6 @@ void CComponentsForm::paintCCItems()
//cache original item position and dimensions //cache original item position and dimensions
int x_item, y_item, w_item, h_item; int x_item, y_item, w_item, h_item;
v_cc_items[i]->getDimensions(&x_item, &y_item, &w_item, &h_item); v_cc_items[i]->getDimensions(&x_item, &y_item, &w_item, &h_item);
int xy_ref = 0+fr_thickness; //allowed minimal x and y start position int xy_ref = 0+fr_thickness; //allowed minimal x and y start position
if (x_item < xy_ref){ if (x_item < xy_ref){
@@ -270,6 +269,11 @@ void CComponentsForm::paintCCItems()
printf("[CComponentsForm] %s: item %d too large, definied height=%d, possible height=%d \n", __FUNCTION__, i, h_item, v_cc_items[i]->getHeight()); printf("[CComponentsForm] %s: item %d too large, definied height=%d, possible height=%d \n", __FUNCTION__, i, h_item, v_cc_items[i]->getHeight());
#endif #endif
} }
//set real position dimension to item
int real_x = v_cc_items[i]->getXPos();
int real_y = v_cc_items[i]->getYPos();
v_cc_items[i]->setRealPos(real_x, real_y);
//paint element without saved screen! //paint element without saved screen!
v_cc_items[i]->paint(CC_SAVE_SCREEN_NO); v_cc_items[i]->paint(CC_SAVE_SCREEN_NO);

View File

@@ -54,6 +54,7 @@ void CComponentsItem::initVarItem()
//CComponents //CComponents
initVarBasic(); initVarBasic();
cc_item_index = CC_NO_INDEX; cc_item_index = CC_NO_INDEX;
cc_item_xr = cc_item_yr = -1;
} }
// Paint container background in cc-items with shadow, background and frame. // Paint container background in cc-items with shadow, background and frame.