//! select a region (using canvas coordinates)
void selectRegion(int top, int left, int bottom, int right);
+ //! turn off selection
+ void clearSelection();
//! border size
float border() const;
float left() const;
//! max world right coordinate
float right() const;
+ // return how wide is a pixel in world coordinates?
+ float get_pixel_width() const;
void setViewportCenter(float x);
//! return world coordinate of the left side of the viewport
float viewportHeight() const;
//! return width of the viewport in world coordinates
float viewportWidth() const;
+
+ //! return viewport height in pixels
+ int viewportPixelHeight() const;
+ //! return viewport width in pixels
+ int viewportPixelWidth() const;
+
+ //! convert x axis from display to world coordinates
+ float viewportXtoWorldX(int x);
+ //! convert y axis from display to world coordinates
+ float viewportYtoWorldY(int y);
//! zoom out far enough to show the full size of the sequence
double zoomOut();
void centerOnPath(const std::vector<int>&);
void setColorMapper(boost::shared_ptr<AnnotationColors> cm);
- const AnnotationColors& colorMapper();
+ const AnnotationColorsRef colorMapper();
//! clear our tracks and connections
void clear();
//! copy sequence from selected track using formating function
template<class Item>
- void copySelectedTracks(std::list<Item>& result,
- Item (*format_track)(boost::shared_ptr<Sequence> s,
- int left,
- int right));
+ size_t copySelectedTracks(std::list<Item>& result,
+ Item (*format_track)(const Sequence& s, int left, int right));
//! copy sequence from selected tracks as FASTA sequences
- void copySelectedTracksAsFasta(std::string& copy_buffer);
+ /*! \return number of base pairs copied
+ */
+ size_t copySelectedTracksAsFasta(std::string& copy_buffer);
//! copy sequence from selected tracks as a list of sequences
- void copySelectedTracksAsSequences(std::list<Sequence>& result);
+ /*! \return number of base pairs copied
+ */
+ size_t copySelectedTracksAsSequences(std::list<Sequence>& result);
//! copy sequence from selected tracks as plain sequences
- void copySelectedTracksAsString(std::string& copy_buffer);
+ /*! \return number of base pairs copied
+ */
+ size_t copySelectedTracksAsString(std::string& copy_buffer);
//! copy tracks as a sequence and its coordinates
- void copySelectedTracksAsSeqLocation(std::list<SequenceLocation>& result);
+ size_t copySelectedTracksAsSeqLocation(std::list<SequenceLocation>& result);
//! Provide a logical name for a type discriminator for our glName stack
//! the center of our current viewport (world coord) (used for scrollbar)
float viewport_center;
double zoom_level;
- boost::shared_ptr<AnnotationColors> color_mapper;
- //! container of all the GlSequences loaded into our scene
- std::vector<boost::shared_ptr<GlSequence> > track_container;
+ AnnotationColorsRef color_mapper;
//! counter for each path added to us via connect
int pathid;
protected:
+ //! container of all the GlSequences loaded into our scene
+ std::vector<GlSequenceRef > track_container;
//! where to draw our box (world coordinates)
rect<float> selectedRegion;
//! true if we have a selection
std::list<TrackRegion> selected_tracks;
typedef std::list<TrackRegion>::iterator selected_track_iterator;
};
+
+inline float GlSeqBrowser::viewportXtoWorldX(int x) {
+ GLfloat x_scale = cur_ortho.width()/((float)viewport_size.x);
+ return (cur_ortho.left + (x * x_scale));
+}
+
+inline float GlSeqBrowser::viewportYtoWorldY(int y) {
+ GLfloat y_scale = cur_ortho.height()/((float)viewport_size.y);
+ return cur_ortho.top-(y * y_scale);
+}
+
#endif