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:: INLINE int DisplayRegion::
get_pixel_width() const { get_pixel_width() const {
CDReader cdata(_cycler); 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:: INLINE int DisplayRegion::
get_pixel_height() const { get_pixel_height() const {
CDReader cdata(_cycler); 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:: INLINE void DisplayRegion::
get_pixels(int &pl, int &pr, int &pb, int &pt) const { get_pixels(int &pl, int &pr, int &pb, int &pt) const {
CDReader cdata(_cycler); CDReader cdata(_cycler);
pl = cdata->_pl; pl = cdata->_pixels[0];
pr = cdata->_pr; pr = cdata->_pixels[1];
pb = cdata->_pb; pb = cdata->_pixels[2];
pt = cdata->_pt; pt = cdata->_pixels[3];
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -428,10 +428,10 @@ get_pixels(int &pl, int &pr, int &pb, int &pt) const {
INLINE void DisplayRegion:: INLINE void DisplayRegion::
get_region_pixels(int &xo, int &yo, int &w, int &h) const { get_region_pixels(int &xo, int &yo, int &w, int &h) const {
CDReader cdata(_cycler); CDReader cdata(_cycler);
xo = cdata->_pl; xo = cdata->_pixels[0];
yo = cdata->_pb; yo = cdata->_pixels[2];
w = cdata->_pr - cdata->_pl; w = cdata->_pixels[1] - xo;
h = cdata->_pt - cdata->_pb; h = cdata->_pixels[3] - yo;
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -445,10 +445,10 @@ get_region_pixels(int &xo, int &yo, int &w, int &h) const {
INLINE void DisplayRegion:: INLINE void DisplayRegion::
get_region_pixels_i(int &xo, int &yo, int &w, int &h) const { get_region_pixels_i(int &xo, int &yo, int &w, int &h) const {
CDReader cdata(_cycler); CDReader cdata(_cycler);
xo = cdata->_pl; xo = cdata->_pixels_i[0];
yo = cdata->_pti; yo = cdata->_pixels_i[2];
w = cdata->_pr - cdata->_pl; w = cdata->_pixels_i[1] - xo;
h = cdata->_pbi - cdata->_pti; h = cdata->_pixels_i[3] - yo;
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -816,10 +816,10 @@ get_draw_callback() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void DisplayRegionPipelineReader:: INLINE void DisplayRegionPipelineReader::
get_pixels(int &pl, int &pr, int &pb, int &pt) const { get_pixels(int &pl, int &pr, int &pb, int &pt) const {
pl = _cdata->_pl; pl = _cdata->_pixels[0];
pr = _cdata->_pr; pr = _cdata->_pixels[1];
pb = _cdata->_pb; pb = _cdata->_pixels[2];
pt = _cdata->_pt; pt = _cdata->_pixels[3];
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -831,10 +831,10 @@ get_pixels(int &pl, int &pr, int &pb, int &pt) const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void DisplayRegionPipelineReader:: INLINE void DisplayRegionPipelineReader::
get_region_pixels(int &xo, int &yo, int &w, int &h) const { get_region_pixels(int &xo, int &yo, int &w, int &h) const {
xo = _cdata->_pl; xo = _cdata->_pixels[0];
yo = _cdata->_pb; yo = _cdata->_pixels[2];
w = _cdata->_pr - _cdata->_pl; w = _cdata->_pixels[1] - xo;
h = _cdata->_pt - _cdata->_pb; h = _cdata->_pixels[3] - yo;
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -847,10 +847,10 @@ get_region_pixels(int &xo, int &yo, int &w, int &h) const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void DisplayRegionPipelineReader:: INLINE void DisplayRegionPipelineReader::
get_region_pixels_i(int &xo, int &yo, int &w, int &h) const { get_region_pixels_i(int &xo, int &yo, int &w, int &h) const {
xo = _cdata->_pl; xo = _cdata->_pixels_i[0];
yo = _cdata->_pti; yo = _cdata->_pixels_i[2];
w = _cdata->_pr - _cdata->_pl; w = _cdata->_pixels_i[1] - xo;
h = _cdata->_pbi - _cdata->_pti; 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:: INLINE int DisplayRegionPipelineReader::
get_pixel_width() const { 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 // Description: Gets the index into a lens_node lens array. 0 default
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE int DisplayRegionPipelineReader:: INLINE int DisplayRegionPipelineReader::
get_lens_index() const get_lens_index() const {
{
return _cdata->_lens_index; return _cdata->_lens_index;
} }
@ -881,5 +880,5 @@ get_lens_index() const
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE int DisplayRegionPipelineReader:: INLINE int DisplayRegionPipelineReader::
get_pixel_height() const { 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:: void DisplayRegion::
output(ostream &out) const { output(ostream &out) const {
CDReader cdata(_cycler); CDReader cdata(_cycler);
out << "DisplayRegion(" << cdata->_dimensions << ")=pixels(" << cdata->_pl out << "DisplayRegion(" << cdata->_dimensions << ")=pixels("
<< " " << cdata->_pr << " " << cdata->_pb << " " << cdata->_pt << 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"; << "DisplayRegion::do_compute_pixels(" << x_size << ", " << y_size << ")\n";
} }
int old_w = cdata->_pr - cdata->_pl; int old_w = cdata->_pixels[1] - cdata->_pixels[0];
int old_h = cdata->_pt - cdata->_pb; int old_h = cdata->_pixels[3] - cdata->_pixels[2];
cdata->_pl = int((cdata->_dimensions[0] * x_size) + 0.5); cdata->_pixels[0] = int((cdata->_dimensions[0] * x_size) + 0.5);
cdata->_pr = int((cdata->_dimensions[1] * 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); nassertv(_window != (GraphicsOutput *)NULL);
if (_window->get_inverted()) { if (_window->get_inverted()) {
// The window is inverted; compute the DisplayRegion accordingly. // The window is inverted; compute the DisplayRegion accordingly.
cdata->_pb = int(((1.0f - cdata->_dimensions[3]) * y_size) + 0.5); cdata->_pixels[2] = int(((1.0f - cdata->_dimensions[3]) * y_size) + 0.5);
cdata->_pt = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5); cdata->_pixels[3] = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5);
cdata->_pbi = int((cdata->_dimensions[3] * y_size) + 0.5); cdata->_pixels_i[2] = int((cdata->_dimensions[3] * y_size) + 0.5);
cdata->_pti = int((cdata->_dimensions[2] * y_size) + 0.5); cdata->_pixels_i[3] = int((cdata->_dimensions[2] * y_size) + 0.5);
} else { } else {
// The window is normal. // The window is normal.
cdata->_pb = int((cdata->_dimensions[2] * y_size) + 0.5); cdata->_pixels[2] = int((cdata->_dimensions[2] * y_size) + 0.5);
cdata->_pt = int((cdata->_dimensions[3] * y_size) + 0.5); cdata->_pixels[3] = int((cdata->_dimensions[3] * y_size) + 0.5);
cdata->_pbi = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5); cdata->_pixels_i[2] = int(((1.0f - cdata->_dimensions[2]) * y_size) + 0.5);
cdata->_pti = int(((1.0f - cdata->_dimensions[3]) * 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:: DisplayRegion::CData::
CData() : CData() :
_dimensions(0.0f, 1.0f, 0.0f, 1.0f), _dimensions(0.0f, 1.0f, 0.0f, 1.0f),
_pl(0), _pr(0), _pb(0), _pt(0), _pixels(0, 0, 0, 0),
_pbi(0), _pti(0), _lens_index(0), _pixels_i(0, 0, 0, 0),
_lens_index(0),
_camera_node((Camera *)NULL), _camera_node((Camera *)NULL),
_active(true), _active(true),
_sort(0), _sort(0),
@ -834,12 +836,8 @@ CData() :
DisplayRegion::CData:: DisplayRegion::CData::
CData(const DisplayRegion::CData &copy) : CData(const DisplayRegion::CData &copy) :
_dimensions(copy._dimensions), _dimensions(copy._dimensions),
_pl(copy._pl), _pixels(copy._pixels),
_pr(copy._pr), _pixels_i(copy._pixels_i),
_pb(copy._pb),
_pt(copy._pt),
_pbi(copy._pbi),
_pti(copy._pti),
_lens_index(copy._lens_index), _lens_index(copy._lens_index),
_camera(copy._camera), _camera(copy._camera),
_camera_node(copy._camera_node), _camera_node(copy._camera_node),

View File

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