Use LVecBase4i to store _pixels in DisplayRegion

This commit is contained in:
rdb 2014-07-06 10:26:09 +00:00
parent d5a61d3705
commit e5447a5fcd
3 changed files with 53 additions and 60 deletions

View File

@ -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];
}

View File

@ -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),

View File

@ -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;