Move Fl_Graphics_Driver::draw(Fl_Shared_Image* from Fl_Shared_Image.cxx to Fl_Graphics_Driver.cxx where it belongs.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12408 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
9fc2d43102
commit
6ac3d87d31
@ -188,6 +188,33 @@ void Fl_Graphics_Driver::set_current_() {
|
||||
}
|
||||
|
||||
|
||||
/** Draws an Fl_Shared_Image object using this graphics driver.
|
||||
\param shared shared image to be drawn
|
||||
\param X,Y top-left position of the drawn image */
|
||||
void Fl_Graphics_Driver::draw(Fl_Shared_Image *shared, int X, int Y) {
|
||||
if ( shared->w() == shared->image_->w() && shared->h() == shared->image_->h()) {
|
||||
shared->image_->draw(X, Y, shared->w(), shared->h(), 0, 0);
|
||||
return;
|
||||
}
|
||||
// don't call Fl_Graphics_Driver::draw_scaled(Fl_Image*,...) for an enlarged Fl_Bitmap or Fl_Pixmap
|
||||
if (shared->image_->as_rgb_image() || (shared->w() <= shared->image_->w() && shared->h() <= shared->image_->h())) {
|
||||
int done = draw_scaled(shared->image_, X, Y, shared->w(), shared->h());
|
||||
if (done) return;
|
||||
}
|
||||
if (shared->scaled_image_ && (shared->scaled_image_->w() != shared->w() || shared->scaled_image_->h() != shared->h())) {
|
||||
delete shared->scaled_image_;
|
||||
shared->scaled_image_ = NULL;
|
||||
}
|
||||
if (!shared->scaled_image_) {
|
||||
Fl_RGB_Scaling previous = Fl_Shared_Image::RGB_scaling();
|
||||
Fl_Shared_Image::RGB_scaling(shared->scaling_algorithm_); // useless but no harm if image_ is not an Fl_RGB_Image
|
||||
shared->scaled_image_ = shared->image_->copy(shared->w(), shared->h());
|
||||
Fl_Shared_Image::RGB_scaling(previous);
|
||||
}
|
||||
shared->scaled_image_->draw(X, Y, shared->scaled_image_->w(), shared->scaled_image_->h(), 0, 0);
|
||||
}
|
||||
|
||||
|
||||
#ifndef FL_DOXYGEN
|
||||
Fl_Scalable_Graphics_Driver::Fl_Scalable_Graphics_Driver() : Fl_Graphics_Driver() {
|
||||
scale_ = 1;
|
||||
|
@ -372,31 +372,6 @@ void Fl_Shared_Image::draw(int X, int Y, int W, int H, int cx, int cy) {
|
||||
if (need_clip) fl_pop_clip();
|
||||
}
|
||||
|
||||
/** Draws an Fl_Shared_Image object using this graphics driver.
|
||||
\param shared shared image to be drawn
|
||||
\param X,Y top-left position of the drawn image */
|
||||
void Fl_Graphics_Driver::draw(Fl_Shared_Image *shared, int X, int Y) {
|
||||
if ( shared->w() == shared->image_->w() && shared->h() == shared->image_->h()) {
|
||||
shared->image_->draw(X, Y, shared->w(), shared->h(), 0, 0);
|
||||
return;
|
||||
}
|
||||
// don't call Fl_Graphics_Driver::draw_scaled(Fl_Image*,...) for an enlarged Fl_Bitmap or Fl_Pixmap
|
||||
if (shared->image_->as_rgb_image() || (shared->w() <= shared->image_->w() && shared->h() <= shared->image_->h())) {
|
||||
int done = draw_scaled(shared->image_, X, Y, shared->w(), shared->h());
|
||||
if (done) return;
|
||||
}
|
||||
if (shared->scaled_image_ && (shared->scaled_image_->w() != shared->w() || shared->scaled_image_->h() != shared->h())) {
|
||||
delete shared->scaled_image_;
|
||||
shared->scaled_image_ = NULL;
|
||||
}
|
||||
if (!shared->scaled_image_) {
|
||||
Fl_RGB_Scaling previous = Fl_Shared_Image::RGB_scaling();
|
||||
Fl_Shared_Image::RGB_scaling(shared->scaling_algorithm_); // useless but no harm if image_ is not an Fl_RGB_Image
|
||||
shared->scaled_image_ = shared->image_->copy(shared->w(), shared->h());
|
||||
Fl_Shared_Image::RGB_scaling(previous);
|
||||
}
|
||||
shared->scaled_image_->draw(X, Y, shared->scaled_image_->w(), shared->scaled_image_->h(), 0, 0);
|
||||
}
|
||||
|
||||
/** Sets the drawing size of the shared image.
|
||||
This function gives the shared image its own size, independently from the size of the original image
|
||||
|
Loading…
Reference in New Issue
Block a user