Browse Source

Use LVecBase4i to store _pixels in DisplayRegion

rdb 11 years ago
parent
commit
e5447a5fcd

+ 29 - 30
panda/src/display/displayRegion.I

@@ -389,7 +389,7 @@ get_draw_callback() const {
 INLINE int DisplayRegion::
 get_pixel_width() const {
   CDReader cdata(_cycler);
-  return cdata->_pr - cdata->_pl;
+  return cdata->_pixels[1] - cdata->_pixels[0];
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -400,7 +400,7 @@ get_pixel_width() const {
 INLINE int DisplayRegion::
 get_pixel_height() const {
   CDReader cdata(_cycler);
-  return cdata->_pt - cdata->_pb;
+  return cdata->_pixels[3] - cdata->_pixels[2];
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -412,10 +412,10 @@ get_pixel_height() const {
 INLINE void DisplayRegion::
 get_pixels(int &pl, int &pr, int &pb, int &pt) const {
   CDReader cdata(_cycler);
-  pl = cdata->_pl;
-  pr = cdata->_pr;
-  pb = cdata->_pb;
-  pt = cdata->_pt;
+  pl = cdata->_pixels[0];
+  pr = cdata->_pixels[1];
+  pb = cdata->_pixels[2];
+  pt = cdata->_pixels[3];
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -428,10 +428,10 @@ get_pixels(int &pl, int &pr, int &pb, int &pt) const {
 INLINE void DisplayRegion::
 get_region_pixels(int &xo, int &yo, int &w, int &h) const {
   CDReader cdata(_cycler);
-  xo = cdata->_pl;
-  yo = cdata->_pb;
-  w = cdata->_pr - cdata->_pl;
-  h = cdata->_pt - cdata->_pb;
+  xo = cdata->_pixels[0];
+  yo = cdata->_pixels[2];
+  w = cdata->_pixels[1] - xo;
+  h = cdata->_pixels[3] - yo;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -445,10 +445,10 @@ get_region_pixels(int &xo, int &yo, int &w, int &h) const {
 INLINE void DisplayRegion::
 get_region_pixels_i(int &xo, int &yo, int &w, int &h) const {
   CDReader cdata(_cycler);
-  xo = cdata->_pl;
-  yo = cdata->_pti;
-  w = cdata->_pr - cdata->_pl;
-  h = cdata->_pbi - cdata->_pti;
+  xo = cdata->_pixels_i[0];
+  yo = cdata->_pixels_i[2];
+  w = cdata->_pixels_i[1] - xo;
+  h = cdata->_pixels_i[3] - yo;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -816,10 +816,10 @@ get_draw_callback() const {
 ////////////////////////////////////////////////////////////////////
 INLINE void DisplayRegionPipelineReader::
 get_pixels(int &pl, int &pr, int &pb, int &pt) const {
-  pl = _cdata->_pl;
-  pr = _cdata->_pr;
-  pb = _cdata->_pb;
-  pt = _cdata->_pt;
+  pl = _cdata->_pixels[0];
+  pr = _cdata->_pixels[1];
+  pb = _cdata->_pixels[2];
+  pt = _cdata->_pixels[3];
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -831,10 +831,10 @@ get_pixels(int &pl, int &pr, int &pb, int &pt) const {
 ////////////////////////////////////////////////////////////////////
 INLINE void DisplayRegionPipelineReader::
 get_region_pixels(int &xo, int &yo, int &w, int &h) const {
-  xo = _cdata->_pl;
-  yo = _cdata->_pb;
-  w = _cdata->_pr - _cdata->_pl;
-  h = _cdata->_pt - _cdata->_pb;
+  xo = _cdata->_pixels[0];
+  yo = _cdata->_pixels[2];
+  w = _cdata->_pixels[1] - xo;
+  h = _cdata->_pixels[3] - yo;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -847,10 +847,10 @@ get_region_pixels(int &xo, int &yo, int &w, int &h) const {
 ////////////////////////////////////////////////////////////////////
 INLINE void DisplayRegionPipelineReader::
 get_region_pixels_i(int &xo, int &yo, int &w, int &h) const {
-  xo = _cdata->_pl;
-  yo = _cdata->_pti;
-  w = _cdata->_pr - _cdata->_pl;
-  h = _cdata->_pbi - _cdata->_pti;
+  xo = _cdata->_pixels_i[0];
+  yo = _cdata->_pixels_i[2];
+  w = _cdata->_pixels_i[1] - xo;
+  h = _cdata->_pixels_i[3] - yo;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -860,7 +860,7 @@ get_region_pixels_i(int &xo, int &yo, int &w, int &h) const {
 ////////////////////////////////////////////////////////////////////
 INLINE int DisplayRegionPipelineReader::
 get_pixel_width() const {
-  return _cdata->_pr - _cdata->_pl;
+  return _cdata->_pixels[1] - _cdata->_pixels[0];
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -869,8 +869,7 @@ get_pixel_width() const {
 //  Description: Gets the index into a lens_node lens array. 0 default
 ////////////////////////////////////////////////////////////////////
 INLINE int DisplayRegionPipelineReader::
-get_lens_index() const
-{
+get_lens_index() const {
   return _cdata->_lens_index;
 }
 
@@ -881,5 +880,5 @@ get_lens_index() const
 ////////////////////////////////////////////////////////////////////
 INLINE int DisplayRegionPipelineReader::
 get_pixel_height() const {
-  return _cdata->_pt - _cdata->_pb;
+  return _cdata->_pixels[3] - _cdata->_pixels[2];
 }

+ 21 - 23
panda/src/display/displayRegion.cxx

@@ -419,9 +419,8 @@ set_target_tex_page(int page) {
 void DisplayRegion::
 output(ostream &out) const {
   CDReader cdata(_cycler);
-  out << "DisplayRegion(" << cdata->_dimensions << ")=pixels(" << cdata->_pl
-      << " " << cdata->_pr << " " << cdata->_pb << " " << cdata->_pt
-      << ")";
+  out << "DisplayRegion(" << cdata->_dimensions << ")=pixels("
+      << cdata->_pixels << ")";
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -747,26 +746,28 @@ do_compute_pixels(int x_size, int y_size, CData *cdata) {
       << "DisplayRegion::do_compute_pixels(" << x_size << ", " << y_size << ")\n";
   }
 
-  int old_w = cdata->_pr - cdata->_pl;
-  int old_h = cdata->_pt - cdata->_pb;
+  int old_w = cdata->_pixels[1] - cdata->_pixels[0];
+  int old_h = cdata->_pixels[3] - cdata->_pixels[2];
 
-  cdata->_pl = int((cdata->_dimensions[0] * x_size) + 0.5);
-  cdata->_pr = int((cdata->_dimensions[1] * x_size) + 0.5);
+  cdata->_pixels[0] = int((cdata->_dimensions[0] * x_size) + 0.5);
+  cdata->_pixels[1] = int((cdata->_dimensions[1] * x_size) + 0.5);
+  cdata->_pixels_i[0] = cdata->_pixels[0];
+  cdata->_pixels_i[1] = cdata->_pixels[1];
 
   nassertv(_window != (GraphicsOutput *)NULL);
   if (_window->get_inverted()) {
     // The window is inverted; compute the DisplayRegion accordingly.
-    cdata->_pb = int(((1.0f - cdata->_dimensions[3]) * y_size) + 0.5);
-    cdata->_pt = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5);
-    cdata->_pbi = int((cdata->_dimensions[3] * y_size) + 0.5);
-    cdata->_pti = int((cdata->_dimensions[2] * y_size) + 0.5);
+    cdata->_pixels[2] = int(((1.0f - cdata->_dimensions[3]) * y_size) + 0.5);
+    cdata->_pixels[3] = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5);
+    cdata->_pixels_i[2] = int((cdata->_dimensions[3] * y_size) + 0.5);
+    cdata->_pixels_i[3] = int((cdata->_dimensions[2] * y_size) + 0.5);
 
   } else {
     // The window is normal.
-    cdata->_pb = int((cdata->_dimensions[2] * y_size) + 0.5);
-    cdata->_pt = int((cdata->_dimensions[3] * y_size) + 0.5);
-    cdata->_pbi = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5);
-    cdata->_pti = int(((1.0f - cdata->_dimensions[3]) * y_size) + 0.5);
+    cdata->_pixels[2] = int((cdata->_dimensions[2] * y_size) + 0.5);
+    cdata->_pixels[3] = int((cdata->_dimensions[3] * y_size) + 0.5);
+    cdata->_pixels_i[2] = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5);
+    cdata->_pixels_i[3] = int(((1.0f - cdata->_dimensions[3]) * y_size) + 0.5);
   }
 }
 
@@ -815,8 +816,9 @@ do_cull(CullHandler *cull_handler, SceneSetup *scene_setup,
 DisplayRegion::CData::
 CData() :
   _dimensions(0.0f, 1.0f, 0.0f, 1.0f),
-  _pl(0), _pr(0), _pb(0), _pt(0),
-  _pbi(0), _pti(0), _lens_index(0),
+  _pixels(0, 0, 0, 0),
+  _pixels_i(0, 0, 0, 0),
+  _lens_index(0),
   _camera_node((Camera *)NULL),
   _active(true),
   _sort(0),
@@ -834,12 +836,8 @@ CData() :
 DisplayRegion::CData::
 CData(const DisplayRegion::CData &copy) :
   _dimensions(copy._dimensions),
-  _pl(copy._pl),
-  _pr(copy._pr),
-  _pb(copy._pb),
-  _pt(copy._pt),
-  _pbi(copy._pbi),
-  _pti(copy._pti),
+  _pixels(copy._pixels),
+  _pixels_i(copy._pixels_i),
   _lens_index(copy._lens_index),
   _camera(copy._camera),
   _camera_node(copy._camera_node),

+ 3 - 7
panda/src/display/displayRegion.h

@@ -195,13 +195,9 @@ private:
     }
 
     LVecBase4 _dimensions;  // left, right, bottom, top
-    
-    int _pl;
-    int _pr;
-    int _pb;
-    int _pt;
-    int _pbi;
-    int _pti;
+    LVecBase4i _pixels;
+    LVecBase4i _pixels_i;
+
     int _lens_index; // index into which lens of a camera is associated with this display region.  0 is default
     
     NodePath _camera;