#define _WX_BITMAP_H_
#include "wx/msw/gdiimage.h"
+#include "wx/math.h"
#include "wx/palette.h"
class WXDLLIMPEXP_FWD_CORE wxBitmap;
virtual bool Create(int width, int height, const wxDC& dc);
virtual bool Create(const void* data, wxBitmapType type, int width, int height, int depth = 1);
virtual bool CreateScaled(int w, int h, int d, double logicalScale)
- { return Create(w*logicalScale,h*logicalScale,d); }
+ { return Create(wxRound(w*logicalScale), wxRound(h*logicalScale), d); }
virtual bool LoadFile(const wxString& name, wxBitmapType type = wxBITMAP_DEFAULT_TYPE);
virtual bool SaveFile(const wxString& name, wxBitmapType type, const wxPalette *cmap = NULL) const;
virtual double GetScaledWidth() const { return GetWidth() / GetScaleFactor(); }
virtual double GetScaledHeight() const { return GetHeight() / GetScaleFactor(); }
virtual wxSize GetScaledSize() const
- { return wxSize(GetScaledWidth(), GetScaledHeight()); }
+ { return wxSize(wxRound(GetScaledWidth()), wxRound(GetScaledHeight())); }
// implementation only from now on
// -------------------------------
wxSize tsize(xlen + sizeBtn.x + MARGIN, totalS.y);
#if defined(__WXMSW__)
- tsize.IncBy(0.4 * totalS.y + 4, 0);
+ tsize.IncBy(4*totalS.y/10 + 4, 0);
#elif defined(__WXGTK__)
tsize.IncBy(totalS.y + 10, 0);
#endif // MSW GTK
// that's too big. So never use the height calculated
// from wxSpinButton::DoGetBestSize().
- wxSize tsize(xlen + sizeBtn.x + MARGIN_BETWEEN + 0.3 * y + 10,
+ wxSize tsize(xlen + sizeBtn.x + MARGIN_BETWEEN + 3*y/10 + 10,
EDIT_HEIGHT_FROM_CHAR_HEIGHT(y));
// Check if the user requested a non-standard height.
int displayx, displayy;
wxDisplaySize(&displayx, &displayy);
- int scaledx = ceil((float)x * 65535.0 / (displayx-1));
- int scaledy = ceil((float)y * 65535.0 / (displayy-1));
+ // Casts are safe because x and y are supposed to be less than the display
+ // size, so there is no danger of overflow.
+ DWORD scaledx = static_cast<DWORD>(ceil(x * 65535.0 / (displayx-1)));
+ DWORD scaledy = static_cast<DWORD>(ceil(y * 65535.0 / (displayy-1)));
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, scaledx, scaledy, 0, 0);
return true;