File failed to load: https://isis.astrogeology.usgs.gov/6.0.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
ViewportBuffer.h
1 #ifndef ViewportBuffer_h
2 #define ViewportBuffer_h
3 
10 /* SPDX-License-Identifier: CC0-1.0 */
11 
12 #include <vector>
13 
14 #include <QRect>
15 
16 #include "Cube.h"
17 #include "Brick.h"
18 
19 // parent
20 #include <QObject>
21 
22 template<class T > class QQueue;
23 class QRect;
24 
25 namespace Isis {
26  class CubeDataThread;
27  class Brick;
28  class CubeViewport;
29  class ViewportBufferAction;
30  class ViewportBufferFill;
31  class ViewportBufferStretch;
32  class ViewportBufferTransform;
33 
63  class ViewportBuffer : public QObject {
64  Q_OBJECT
65 
66  public:
67  ViewportBuffer(CubeViewport *viewport, CubeDataThread *cubeData,
68  int cubeId);
69  virtual ~ViewportBuffer();
70 
71  const std::vector<double> &getLine(int line);
72 
73  void resizedViewport();
74  void pan(int deltaX, int deltaY);
75 
76  void scaleChanged();
77 
78  void fillBuffer(QRect rect);
79  void fillBuffer(QRect rect, const Brick *data);
80 
81  void emptyBuffer(bool force = false);
82 
83  QRect bufferXYRect();
84 
85  void setBand(int band);
86 
88  int getBand() {
89  return p_band;
90  }
91 
92  void enable(bool enabled);
93 
94  void addStretchAction();
95 
96  double currentProgress();
97  double totalUnfilledArea();
98 
105  bool enabled() {
106  return p_enabled;
107  }
108  bool working();
109 
110  bool hasEntireCube();
111 
112  public slots:
113  void DataReady(void *requester, int cubeId, const Isis::Brick *brick);
114 
115  signals:
127  void ReadCube(int cubeId, int startSample, int startLine,
128  int endSample, int endLine, int band, void *caller);
129 
131  void DoneWithData(int, const Isis::Brick *);
132 
133  private:
134  QRect getXYBoundingRect();
136  void updateBoundingRects();
137  void doQueuedActions();
140  void startFillAction(ViewportBufferFill *action);
141 
143 
145 
146  void resizeBuffer(unsigned int width, unsigned int height);
147  void shiftBuffer(int deltaX, int deltaY);
148  void reinitialize();
149  bool actionsPreserveData();
152 
154  int p_cubeId;
156 
157  int p_band;
158 
159  bool p_enabled;
160  std::vector< std::vector<double> > p_buffer;
162 
169 
184 
189  rectLeft = 0,
192  rectBottom
193  };
194 
201 
202  bool p_bricksOrdered;
203  };
204 }
205 
206 #endif
Isis::ViewportBuffer::reinitializeActionExists
bool reinitializeActionExists()
This searches for actions that will reset the entire buffer's contents.
Definition: ViewportBuffer.cpp:730
Isis::ViewportBuffer
Reads and stores visible DN values.
Definition: ViewportBuffer.h:63
Isis::ViewportBuffer::p_bufferInitialized
bool p_bufferInitialized
True if the buffer has been initialized.
Definition: ViewportBuffer.h:161
Isis::ViewportBuffer::getLine
const std::vector< double > & getLine(int line)
Retrieves a line from the buffer.
Definition: ViewportBuffer.cpp:342
Isis::ViewportBuffer::resizedViewport
void resizedViewport()
Call this when the viewport is resized (not zoomed).
Definition: ViewportBuffer.cpp:901
Isis::ViewportBuffer::createViewportBufferFill
ViewportBufferFill * createViewportBufferFill(QRect, bool)
This method creates a fill action based on a rect and using new versus old Y values.
Definition: ViewportBuffer.cpp:496
QList< double >
Isis::ViewportBuffer::reinitialize
void reinitialize()
This resizes and fills entire buffer.
Definition: ViewportBuffer.cpp:1340
Isis::ViewportBuffer::p_viewport
CubeViewport * p_viewport
The CubeViewport which created this buffer.
Definition: ViewportBuffer.h:153
Isis::ViewportBuffer::getSampLineBoundingRect
QList< double > getSampLineBoundingRect()
Retrieves the current bounding rect in sample/line coordinates of the visible cube area.
Definition: ViewportBuffer.cpp:447
Isis::ViewportBuffer::totalUnfilledArea
double totalUnfilledArea()
This returns the amount of area in the queue that needs new cube data/will be filled by fill actions.
Definition: ViewportBuffer.cpp:649
Isis::ViewportBuffer::enqueueAction
void enqueueAction(ViewportBufferAction *)
This enqueues the given action.
Definition: ViewportBuffer.cpp:320
Isis::ViewportBuffer::getXYBoundingRect
QRect getXYBoundingRect()
Retrieves the current bounding rect in viewport pixels of the visible cube area.
Definition: ViewportBuffer.cpp:364
Isis::ViewportBuffer::p_band
int p_band
The band to read from.
Definition: ViewportBuffer.h:157
Isis::ViewportBuffer::p_actions
QQueue< ViewportBufferAction * > * p_actions
This is the set of actions we wish to perform on the buffer.
Definition: ViewportBuffer.h:200
Isis::ViewportBufferFill
Definition: ViewportBufferFill.h:29
Isis::ViewportBuffer::setBand
void setBand(int band)
Sets the band to read from, the buffer will be re-read if the band changes.
Definition: ViewportBuffer.cpp:1319
Isis::ViewportBuffer::emptyBuffer
void emptyBuffer(bool force=false)
This is meant to clear up ram on non-active viewports.
Definition: ViewportBuffer.cpp:1241
Isis::ViewportBuffer::getBand
int getBand()
Return the band associated with this viewport buffer.
Definition: ViewportBuffer.h:88
Isis::ViewportBufferStretch
Definition: ViewportBufferStretch.h:22
Isis::ViewportBuffer::p_oldSampLineBoundingRect
QList< double > p_oldSampLineBoundingRect
Previous bounding rect.
Definition: ViewportBuffer.h:177
Isis::ViewportBuffer::shiftBuffer
void shiftBuffer(int deltaX, int deltaY)
Shifts the DN values in the buffer by deltaX and deltaY.
Definition: ViewportBuffer.cpp:845
Isis::Brick
Buffer for containing a three dimensional section of an image.
Definition: Brick.h:45
Isis::ViewportBuffer::rectRight
@ rectRight
QRect.right()
Definition: ViewportBuffer.h:191
Isis::ViewportBuffer::sampLineRectPosition
sampLineRectPosition
Enumeration for accessing sample/line bounding rectangles.
Definition: ViewportBuffer.h:188
Isis::CubeDataThread
Encapsulation of Cube I/O with Change Notifications.
Definition: CubeDataThread.h:59
Isis::ViewportBuffer::rectBottom
@ rectBottom
QRect.bottom()
Definition: ViewportBuffer.h:192
Isis::ViewportBufferTransform
Definition: ViewportBufferTransform.h:21
Isis::ViewportBuffer::ReadCube
void ReadCube(int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
Ask the cube data thread for data.
Isis::ViewportBuffer::enabled
bool enabled()
Returns whether the buffer is enabled (reading data) or not.
Definition: ViewportBuffer.h:105
Isis::ViewportBuffer::currentProgress
double currentProgress()
Returns the viewport buffer's loading progress.
Definition: ViewportBuffer.cpp:633
Isis::ViewportBufferAction
Definition: ViewportBufferAction.h:18
Isis::ViewportBuffer::requestCubeLine
void requestCubeLine(ViewportBufferFill *fill)
This requests the next line in a fill action.
Definition: ViewportBuffer.cpp:541
Isis::ViewportBuffer::p_vertScrollBarPos
int p_vertScrollBarPos
Current vertical scroll bar position.
Definition: ViewportBuffer.h:180
Isis::ViewportBuffer::p_sampLineBoundingRect
QList< double > p_sampLineBoundingRect
This rect is in cube pixels and represents the area that this viewport buffer defines in the viewport...
Definition: ViewportBuffer.h:176
Isis::ViewportBuffer::rectTop
@ rectTop
QRect.top()
Definition: ViewportBuffer.h:190
Isis::ViewportBuffer::p_XYBoundingRect
QRect p_XYBoundingRect
This rect is in viewport pixels and represents the area that this viewport buffer defines in the view...
Definition: ViewportBuffer.h:167
Isis::ViewportBuffer::p_dataThread
CubeDataThread * p_dataThread
manages cube io
Definition: ViewportBuffer.h:155
Isis::ViewportBuffer::p_oldViewportHeight
int p_oldViewportHeight
Previous viewport height.
Definition: ViewportBuffer.h:179
Isis::CubeViewport
Widget to display Isis cubes for qt apps.
Definition: CubeViewport.h:122
Isis::ViewportBuffer::p_requestedFillArea
double p_requestedFillArea
Sum of the requested area to be filled.
Definition: ViewportBuffer.h:183
Isis::ViewportBuffer::p_buffer
std::vector< std::vector< double > > p_buffer
The buffer to hold cube dn values.
Definition: ViewportBuffer.h:160
Isis::ViewportBuffer::bufferXYRect
QRect bufferXYRect()
Returns a rect, in screen pixels, of the area this buffer covers.
Definition: ViewportBuffer.cpp:1257
Isis::ViewportBuffer::rectLeft
@ rectLeft
QRect.left()
Definition: ViewportBuffer.h:189
Isis::ViewportBuffer::doQueuedActions
void doQueuedActions()
This processes the next available action, or starts processing it, if possible.
Definition: ViewportBuffer.cpp:579
Isis::ViewportBuffer::~ViewportBuffer
virtual ~ViewportBuffer()
Updates total buffer size on destruction.
Definition: ViewportBuffer.cpp:80
QQueue
This is free and unencumbered software released into the public domain.
Definition: BoxcarCachingAlgorithm.h:14
Isis::ViewportBuffer::addStretchAction
void addStretchAction()
When all current operations finish the cube viewport will be asked to do a stretch if you call this.
Definition: ViewportBuffer.cpp:1220
Isis::ViewportBuffer::scaleChanged
void scaleChanged()
Call this when zoomed, re-reads visible area.
Definition: ViewportBuffer.cpp:1281
Isis::ViewportBuffer::enable
void enable(bool enabled)
This turns on or off reading from the cube.
Definition: ViewportBuffer.cpp:1302
Isis::ViewportBuffer::p_oldXYBoundingRect
QRect p_oldXYBoundingRect
The previous bounding rect.
Definition: ViewportBuffer.h:168
Isis::ViewportBuffer::p_enabled
bool p_enabled
True if reading from cube (active)
Definition: ViewportBuffer.h:159
Isis::ViewportBuffer::pan
void pan(int deltaX, int deltaY)
Call this when the viewport is panned.
Definition: ViewportBuffer.cpp:1048
Isis::ViewportBuffer::startFillAction
void startFillAction(ViewportBufferFill *action)
Initializes a fill action by requesting the initial cube data.
Definition: ViewportBuffer.cpp:795
Isis::ViewportBuffer::doStretchAction
void doStretchAction(ViewportBufferStretch *action)
Tells the cube viewport to restretch.
Definition: ViewportBuffer.cpp:814
Isis::ViewportBuffer::p_initialStretchDone
bool p_initialStretchDone
True if a stretch action has occurred.
Definition: ViewportBuffer.h:182
Isis::ViewportBuffer::hasEntireCube
bool hasEntireCube()
Method to see if the entire cube is in the buffer.
Definition: ViewportBuffer.cpp:423
Isis::ViewportBuffer::doTransformAction
void doTransformAction(ViewportBufferTransform *action)
Does a transformation on the internal viewport buffer.
Definition: ViewportBuffer.cpp:769
QObject
Isis::ViewportBuffer::updateBoundingRects
void updateBoundingRects()
Sets the old and new bounding rects.
Definition: ViewportBuffer.cpp:468
Isis::ViewportBuffer::fillBuffer
void fillBuffer(QRect rect)
This method will convert the rect to sample/line positions and read from the cube into the buffer.
Definition: ViewportBuffer.cpp:114
Isis::ViewportBuffer::actionsPreserveData
bool actionsPreserveData()
This returns true if any data currently in the buffer would be preserved if all of the queued actions...
Definition: ViewportBuffer.cpp:674
Isis::ViewportBuffer::p_viewportHeight
int p_viewportHeight
Current viewport height.
Definition: ViewportBuffer.h:178
Isis::ViewportBuffer::DataReady
void DataReady(void *requester, int cubeId, const Isis::Brick *brick)
This method is called when requested bricks become available.
Definition: ViewportBuffer.cpp:208
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::ViewportBuffer::resizeBuffer
void resizeBuffer(unsigned int width, unsigned int height)
Enlarges or shrinks the buffer and fills with nulls if necessary.
Definition: ViewportBuffer.cpp:829
Isis::ViewportBuffer::DoneWithData
void DoneWithData(int, const Isis::Brick *)
Tell cube data thread we're done with a brick.
Isis::ViewportBuffer::p_oldVertScrollBarPos
int p_oldVertScrollBarPos
Previous vertical scroll bar position.
Definition: ViewportBuffer.h:181
Isis::ViewportBuffer::p_cubeId
int p_cubeId
Id associated with the cube in this viewport buffer.
Definition: ViewportBuffer.h:154
Isis::ViewportBuffer::working
bool working()
This tests if queued actions exist in the viewport buffer.
Definition: ViewportBuffer.cpp:759
Isis::ViewportBuffer::ViewportBuffer
ViewportBuffer(CubeViewport *viewport, CubeDataThread *cubeData, int cubeId)
ViewportBuffer constructor.
Definition: ViewportBuffer.cpp:44

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/13/2023 15:17:26