From f3974002d501d2d48506e9647ca1fa3f33e61264 Mon Sep 17 00:00:00 2001 From: David Capello Date: Sat, 14 Feb 2015 22:37:56 -0300 Subject: [PATCH] Fix int <-> double <-> float casts It looks like allegro includes several implicit conversions between float and double. --- src/app/cmd/add_cel.h | 2 +- src/app/cmd/add_layer.h | 2 +- src/app/cmd/add_palette.h | 2 +- src/app/cmd/copy_region.h | 2 +- src/app/commands/cmd_sprite_size.cpp | 4 +- .../commands/filters/color_curve_editor.cpp | 4 +- .../filters/convolution_matrix_stock.cpp | 6 +-- src/app/file/jpeg_format.cpp | 2 +- src/app/ini_file.cpp | 12 ++++- src/app/ini_file.h | 7 ++- src/app/ui/editor/editor.cpp | 4 +- src/app/ui/editor/pixels_movement.cpp | 46 ++++++++++-------- src/app/ui/editor/transform_handles.cpp | 9 ++-- src/app/ui/skin/skin_theme.cpp | 4 +- src/app/ui/skin/skin_theme.h | 2 +- src/app/ui/skin/style.cpp | 6 ++- src/app/ui/tabs.cpp | 8 ++-- src/base/sha1.cpp | 4 +- src/base/thread.cpp | 2 +- src/doc/algo.cpp | 8 ++-- src/doc/algorithm/resize_image.cpp | 48 +++++++++---------- src/doc/brush.cpp | 32 ++++++------- src/ui/int_entry.cpp | 4 +- src/ui/splitter.cpp | 6 +-- 24 files changed, 127 insertions(+), 99 deletions(-) diff --git a/src/app/cmd/add_cel.h b/src/app/cmd/add_cel.h index a86e86d51..a14bcdbab 100644 --- a/src/app/cmd/add_cel.h +++ b/src/app/cmd/add_cel.h @@ -36,7 +36,7 @@ namespace cmd { void onRedo() override; size_t onMemSize() const override { return sizeof(*this) + - const_cast(&m_stream)->tellp(); + (size_t)const_cast(&m_stream)->tellp(); } private: diff --git a/src/app/cmd/add_layer.h b/src/app/cmd/add_layer.h index 540328a11..3dfccf996 100644 --- a/src/app/cmd/add_layer.h +++ b/src/app/cmd/add_layer.h @@ -32,7 +32,7 @@ namespace cmd { void onRedo() override; size_t onMemSize() const override { return sizeof(*this) + - const_cast(&m_stream)->tellp(); + (size_t)const_cast(&m_stream)->tellp(); } private: diff --git a/src/app/cmd/add_palette.h b/src/app/cmd/add_palette.h index a2f391ef4..be34de958 100644 --- a/src/app/cmd/add_palette.h +++ b/src/app/cmd/add_palette.h @@ -36,7 +36,7 @@ namespace cmd { void onRedo() override; size_t onMemSize() const override { return sizeof(*this) + - const_cast(&m_stream)->tellp(); + (size_t)const_cast(&m_stream)->tellp(); } private: diff --git a/src/app/cmd/copy_region.h b/src/app/cmd/copy_region.h index 6bc4bb56d..2351576ab 100644 --- a/src/app/cmd/copy_region.h +++ b/src/app/cmd/copy_region.h @@ -31,7 +31,7 @@ namespace cmd { void onRedo() override; size_t onMemSize() const override { return sizeof(*this) + - const_cast(&m_stream)->tellp(); + (size_t)const_cast(&m_stream)->tellp(); } private: diff --git a/src/app/commands/cmd_sprite_size.cpp b/src/app/commands/cmd_sprite_size.cpp index 74d441227..b95e92b9b 100644 --- a/src/app/commands/cmd_sprite_size.cpp +++ b/src/app/commands/cmd_sprite_size.cpp @@ -202,8 +202,8 @@ void SpriteSizeCommand::onExecute(Context* context) { const ContextReader reader(context); const Sprite* sprite(reader.sprite()); - int new_width = (m_width ? m_width: sprite->width()*m_scaleX); - int new_height = (m_height ? m_height: sprite->height()*m_scaleY); + int new_width = (m_width ? m_width: int(sprite->width()*m_scaleX)); + int new_height = (m_height ? m_height: int(sprite->height()*m_scaleY)); ResizeMethod resize_method = m_resizeMethod; if (context->isUiAvailable()) { diff --git a/src/app/commands/filters/color_curve_editor.cpp b/src/app/commands/filters/color_curve_editor.cpp index 2b50e7779..a17b3561e 100644 --- a/src/app/commands/filters/color_curve_editor.cpp +++ b/src/app/commands/filters/color_curve_editor.cpp @@ -259,8 +259,8 @@ bool ColorCurveEditor::editNodeManually(gfx::Point& viewPt) window->openWindowInForeground(); if (window->getKiller() == button_ok) { - viewPt.x = entry_x->getTextDouble(); - viewPt.y = entry_y->getTextDouble(); + viewPt.x = int(entry_x->getTextDouble()); + viewPt.y = int(entry_y->getTextDouble()); res = true; } else { diff --git a/src/app/commands/filters/convolution_matrix_stock.cpp b/src/app/commands/filters/convolution_matrix_stock.cpp index 3f834071a..d64e2f767 100644 --- a/src/app/commands/filters/convolution_matrix_stock.cpp +++ b/src/app/commands/filters/convolution_matrix_stock.cpp @@ -113,7 +113,7 @@ void ConvolutionMatrixStock::reloadStock() for (y=0; yvalue(x, y) = value; @@ -138,14 +138,14 @@ void ConvolutionMatrixStock::reloadStock() // Div READ_TOK(); if (strcmp(buf, "auto") != 0) - div = strtod(buf, NULL) * ConvolutionMatrix::Precision; + div = int(strtod(buf, NULL) * ConvolutionMatrix::Precision); matrix->setDiv(div); // Bias READ_TOK(); if (strcmp(buf, "auto") != 0) - bias = strtod(buf, NULL); + bias = int(strtod(buf, NULL)); matrix->setBias(bias); diff --git a/src/app/file/jpeg_format.cpp b/src/app/file/jpeg_format.cpp index 2b0d3b872..3d8f69aab 100644 --- a/src/app/file/jpeg_format.cpp +++ b/src/app/file/jpeg_format.cpp @@ -369,7 +369,7 @@ SharedPtr JpegFormat::onGetFormatOptions(FileOp* fop) ui::Slider* slider_quality = app::find_widget(window, "quality"); ui::Widget* ok = app::find_widget(window, "ok"); - slider_quality->setValue(jpeg_options->quality * 10.0f); + slider_quality->setValue(int(jpeg_options->quality * 10.0f)); window->openWindowInForeground(); diff --git a/src/app/ini_file.cpp b/src/app/ini_file.cpp index cae0c8f59..3c18fbcaa 100644 --- a/src/app/ini_file.cpp +++ b/src/app/ini_file.cpp @@ -116,10 +116,20 @@ void set_config_int(const char* section, const char* name, int value) float get_config_float(const char* section, const char* name, float value) { - return g_configs.back()->getDoubleValue(section, name, value); + return (float)g_configs.back()->getDoubleValue(section, name, (float)value); } void set_config_float(const char* section, const char* name, float value) +{ + g_configs.back()->setDoubleValue(section, name, (float)value); +} + +double get_config_double(const char* section, const char* name, double value) +{ + return g_configs.back()->getDoubleValue(section, name, value); +} + +void set_config_double(const char* section, const char* name, double value) { g_configs.back()->setDoubleValue(section, name, value); } diff --git a/src/app/ini_file.h b/src/app/ini_file.h index fd479090f..1323752a6 100644 --- a/src/app/ini_file.h +++ b/src/app/ini_file.h @@ -36,6 +36,9 @@ namespace app { float get_config_float(const char* section, const char* name, float value); void set_config_float(const char* section, const char* name, float value); + double get_config_double(const char* section, const char* name, double value); + void set_config_double(const char* section, const char* name, double value); + bool get_config_bool(const char* section, const char* name, bool value); void set_config_bool(const char* section, const char* name, bool value); @@ -71,7 +74,7 @@ namespace app { } inline double get_config_value(const char* section, const char* name, double value) { - return get_config_float(section, name, value); + return get_config_double(section, name, value); } inline gfx::Rect get_config_value(const char* section, const char* name, const gfx::Rect& value) { @@ -104,7 +107,7 @@ namespace app { } inline void set_config_value(const char* section, const char* name, double value) { - set_config_float(section, name, value); + set_config_double(section, name, value); } inline void set_config_value(const char* section, const char* name, const gfx::Rect& value) { diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp index 72f5ba3c3..306cc486d 100644 --- a/src/app/ui/editor/editor.cpp +++ b/src/app/ui/editor/editor.cpp @@ -380,7 +380,7 @@ void Editor::drawOneSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& sprite // rendering process depending on each cel position. // E.g. when we are drawing in a cel with position < (0,0) if (m_zoom.scale() < 1.0) - expose.enlarge(1./m_zoom.scale()); + expose.enlarge(int(1./m_zoom.scale())); m_document->notifyExposeSpritePixels(m_sprite, gfx::Region(expose)); } @@ -447,7 +447,7 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc) // For odd zoom scales minor than 100% we have to add an extra window // just to make sure the whole rectangle is drawn. if (m_zoom.scale() < 1.0) - rc.inflate(1./m_zoom.scale(), 1./m_zoom.scale()); + rc.inflate(int(1./m_zoom.scale()), int(1./m_zoom.scale())); gfx::Rect client = getClientBounds(); gfx::Rect spriteRect( diff --git a/src/app/ui/editor/pixels_movement.cpp b/src/app/ui/editor/pixels_movement.cpp index fc2ea65ce..66d3033d9 100644 --- a/src/app/ui/editor/pixels_movement.cpp +++ b/src/app/ui/editor/pixels_movement.cpp @@ -181,10 +181,10 @@ void PixelsMovement::moveImage(const gfx::Point& pos, MoveModifier moveModifier) bool updateBounds = false; int dx, dy; - dx = ((pos.x - m_catchPos.x) * cos(m_currentData.angle()) + - (pos.y - m_catchPos.y) * -sin(m_currentData.angle())); - dy = ((pos.x - m_catchPos.x) * sin(m_currentData.angle()) + - (pos.y - m_catchPos.y) * cos(m_currentData.angle())); + dx = int((pos.x - m_catchPos.x) * cos(m_currentData.angle()) + + (pos.y - m_catchPos.y) * -sin(m_currentData.angle())); + dy = int((pos.x - m_catchPos.x) * sin(m_currentData.angle()) + + (pos.y - m_catchPos.y) * cos(m_currentData.angle())); switch (m_handle) { @@ -388,8 +388,8 @@ void PixelsMovement::moveImage(const gfx::Point& pos, MoveModifier moveModifier) // redraw of the sprite. gfx::Rect fullBounds; for (int i=0; i corners[i].x) leftTop.x = corners[i].x; - if (leftTop.y > corners[i].y) leftTop.y = corners[i].y; - if (rightBottom.x < corners[i].x) rightBottom.x = corners[i].x; - if (rightBottom.y < corners[i].y) rightBottom.y = corners[i].y; + if (leftTop.x > corners[i].x) leftTop.x = (int)corners[i].x; + if (leftTop.y > corners[i].y) leftTop.y = (int)corners[i].y; + if (rightBottom.x < corners[i].x) rightBottom.x = (int)corners[i].x; + if (rightBottom.y < corners[i].y) rightBottom.y = (int)corners[i].y; } int width = rightBottom.x - leftTop.x; @@ -489,7 +489,7 @@ void PixelsMovement::dropImageTemporarily() newPivot += pivotPosFactor.x * point2Vector(corners.rightTop() - corners.leftTop()); newPivot += pivotPosFactor.y * point2Vector(corners.leftBottom() - corners.leftTop()); - m_currentData.displacePivotTo(gfx::Point(newPivot.x, newPivot.y)); + m_currentData.displacePivotTo(gfx::Point((int)newPivot.x, (int)newPivot.y)); } redrawCurrentMask(); @@ -616,18 +616,26 @@ void PixelsMovement::drawParallelogram(doc::Image* dst, doc::Image* src, case kFastRotationAlgorithm: doc::algorithm::parallelogram(dst, src, - corners.leftTop().x-leftTop.x, corners.leftTop().y-leftTop.y, - corners.rightTop().x-leftTop.x, corners.rightTop().y-leftTop.y, - corners.rightBottom().x-leftTop.x, corners.rightBottom().y-leftTop.y, - corners.leftBottom().x-leftTop.x, corners.leftBottom().y-leftTop.y); + int(corners.leftTop().x-leftTop.x), + int(corners.leftTop().y-leftTop.y), + int(corners.rightTop().x-leftTop.x), + int(corners.rightTop().y-leftTop.y), + int(corners.rightBottom().x-leftTop.x), + int(corners.rightBottom().y-leftTop.y), + int(corners.leftBottom().x-leftTop.x), + int(corners.leftBottom().y-leftTop.y)); break; case kRotSpriteRotationAlgorithm: doc::algorithm::rotsprite_image(dst, src, - corners.leftTop().x-leftTop.x, corners.leftTop().y-leftTop.y, - corners.rightTop().x-leftTop.x, corners.rightTop().y-leftTop.y, - corners.rightBottom().x-leftTop.x, corners.rightBottom().y-leftTop.y, - corners.leftBottom().x-leftTop.x, corners.leftBottom().y-leftTop.y); + int(corners.leftTop().x-leftTop.x), + int(corners.leftTop().y-leftTop.y), + int(corners.rightTop().x-leftTop.x), + int(corners.rightTop().y-leftTop.y), + int(corners.rightBottom().x-leftTop.x), + int(corners.rightBottom().y-leftTop.y), + int(corners.leftBottom().x-leftTop.x), + int(corners.leftBottom().y-leftTop.y)); break; } diff --git a/src/app/ui/editor/transform_handles.cpp b/src/app/ui/editor/transform_handles.cpp index 713a2ad85..5d7886a69 100644 --- a/src/app/ui/editor/transform_handles.cpp +++ b/src/app/ui/editor/transform_handles.cpp @@ -69,7 +69,8 @@ HandleType TransformHandles::getHandleAtPoint(Editor* editor, const gfx::Point& std::vector screenPoints(corners.size()); for (size_t c=0; ceditorToScreen(gfx::Point(corners[c].x, corners[c].y)); + screenPoints[c] = editor->editorToScreen( + gfx::Point((int)corners[c].x, (int)corners[c].y)); int handle_rs[2] = { gfx->width()*2, gfx->width()*3 }; for (int i=0; i<2; ++i) { @@ -102,7 +103,8 @@ void TransformHandles::drawHandles(Editor* editor, const gfx::Transformation& tr std::vector screenPoints(corners.size()); for (size_t c=0; ceditorToScreen(gfx::Point(corners[c].x, corners[c].y)); + screenPoints[c] = editor->editorToScreen( + gfx::Point((int)corners[c].x, (int)corners[c].y)); // TODO DO NOT COMMIT #if 0 // Uncomment this if you want to see the bounds in red (only for debugging purposes) @@ -153,7 +155,8 @@ void TransformHandles::invalidateHandles(Editor* editor, const gfx::Transformati std::vector screenPoints(corners.size()); for (size_t c=0; ceditorToScreen(gfx::Point(corners[c].x, corners[c].y)); + screenPoints[c] = editor->editorToScreen( + gfx::Point((int)corners[c].x, (int)corners[c].y)); // Invalidate each corner handle. for (size_t c=0; cdrawRect(getColor(ThemeColor::Text), rc0); gfx::Rect rc = rc0; rc.shrink(1); - int u = (int)((float)rc.w*progress); + int u = (int)((double)rc.w*progress); u = MID(0, u, rc.w); if (u > 0) diff --git a/src/app/ui/skin/skin_theme.h b/src/app/ui/skin/skin_theme.h index a84669e7f..de8e418e6 100644 --- a/src/app/ui/skin/skin_theme.h +++ b/src/app/ui/skin/skin_theme.h @@ -160,7 +160,7 @@ namespace app { void draw_bounds_nw2(ui::Graphics* g, const gfx::Rect& rc, int x_mid, int nw1, int nw2, gfx::Color bg1, gfx::Color bg2); void draw_part_as_hline(ui::Graphics* g, const gfx::Rect& rc, int part); void draw_part_as_vline(ui::Graphics* g, const gfx::Rect& rc, int part); - void paintProgressBar(ui::Graphics* g, const gfx::Rect& rc, float progress); + void paintProgressBar(ui::Graphics* g, const gfx::Rect& rc, double progress); Style* getStyle(const std::string& id) { return m_stylesheet.getStyle(id); diff --git a/src/app/ui/skin/style.cpp b/src/app/ui/skin/style.cpp index 48e7749f9..c4c002165 100644 --- a/src/app/ui/skin/style.cpp +++ b/src/app/ui/skin/style.cpp @@ -132,8 +132,10 @@ Rules::Rules(const css::Query& query) : m_text->setAlign((int)textAlign.number()); m_text->setColor(StyleSheet::convertColor(textColor)); m_text->setPadding(gfx::Border( - paddingLeft.number(), paddingTop.number(), - paddingRight.number(), paddingBottom.number())*ui::guiscale()); + int(paddingLeft.number()), + int(paddingTop.number()), + int(paddingRight.number()), + int(paddingBottom.number()*ui::guiscale()))); } } diff --git a/src/app/ui/tabs.cpp b/src/app/ui/tabs.cpp index f64c47df0..f4882d6bd 100644 --- a/src/app/ui/tabs.cpp +++ b/src/app/ui/tabs.cpp @@ -324,7 +324,7 @@ bool Tabs::onProcessMessage(Message* msg) // Exponential setScrollX(m_begScrollX + - (m_endScrollX - m_begScrollX) * (1.0-std::exp(-10.0 * m_ani_t / (double)ANI_SMOOTH_SCROLL_TICKS))); + int((m_endScrollX - m_begScrollX) * (1.0-std::exp(-10.0 * m_ani_t / (double)ANI_SMOOTH_SCROLL_TICKS)))); } break; } @@ -382,7 +382,8 @@ void Tabs::onPaint(PaintEvent& ev) y_delta = box.h * (ANI_ADDING_TAB_TICKS - m_ani_t) / ANI_ADDING_TAB_TICKS; } else if (m_ani == ANI_REMOVING_TAB && m_nextTabOfTheRemovedOne == tab) { - x_delta += m_removedTab->width - m_removedTab->width*(1.0-std::exp(-10.0 * m_ani_t / (double)ANI_REMOVING_TAB_TICKS)); + x_delta += m_removedTab->width + - int(double(m_removedTab->width)*(1.0-std::exp(-10.0 * m_ani_t / (double)ANI_REMOVING_TAB_TICKS))); x_delta = MID(0, x_delta, m_removedTab->width); // Draw deleted tab @@ -401,7 +402,8 @@ void Tabs::onPaint(PaintEvent& ev) if (m_ani == ANI_REMOVING_TAB && m_nextTabOfTheRemovedOne == NULL) { // Draw deleted tab if (m_removedTab) { - int x_delta = m_removedTab->width - m_removedTab->width*(1.0-std::exp(-10.0 * m_ani_t / (double)ANI_REMOVING_TAB_TICKS)); + int x_delta = m_removedTab->width + - int(double(m_removedTab->width)*(1.0-std::exp(-10.0 * m_ani_t / (double)ANI_REMOVING_TAB_TICKS))); x_delta = MID(0, x_delta, m_removedTab->width); gfx::Rect box2(box.x, box.y, x_delta, box.h); diff --git a/src/base/sha1.cpp b/src/base/sha1.cpp index 5432e8174..0bacf78fa 100644 --- a/src/base/sha1.cpp +++ b/src/base/sha1.cpp @@ -1,5 +1,5 @@ // Aseprite Base Library -// Copyright (c) 2001-2013 David Capello +// Copyright (c) 2001-2013, 2015 David Capello // // This file is released under the terms of the MIT license. // Read LICENSE.txt for more information. @@ -42,7 +42,7 @@ Sha1 Sha1::calculateFromFile(const std::string& fileName) unsigned char buf[1024]; while (file.good()) { file.read((char*)buf, 1024); - streamsize len = file.gcount(); + size_t len = (size_t)file.gcount(); if (len > 0) SHA1Input(&sha, buf, len); } diff --git a/src/base/thread.cpp b/src/base/thread.cpp index f5159cd23..794658686 100644 --- a/src/base/thread.cpp +++ b/src/base/thread.cpp @@ -144,7 +144,7 @@ void base::this_thread::sleep_for(double seconds) { #ifdef _WIN32 - ::Sleep(seconds * 1000.0); + ::Sleep(DWORD(seconds * 1000.0)); #else diff --git a/src/doc/algo.cpp b/src/doc/algo.cpp index a7e107fe8..fc4d97e02 100644 --- a/src/doc/algo.cpp +++ b/src/doc/algo.cpp @@ -418,8 +418,8 @@ void algo_spline(double x0, double y0, double x1, double y1, x = x0; y = y0; - out_x1 = x0; - out_y1 = y0; + out_x1 = (int)x0; + out_y1 = (int)y0; x += .5; y += .5; @@ -431,8 +431,8 @@ void algo_spline(double x0, double y0, double x1, double y1, x += dx; y += dy; - out_x2 = x; - out_y2 = y; + out_x2 = (int)x; + out_y2 = (int)y; proc(out_x1, out_y1, out_x2, out_y2, data); diff --git a/src/doc/algorithm/resize_image.cpp b/src/doc/algorithm/resize_image.cpp index f2a4f7ec5..bd59664ae 100644 --- a/src/doc/algorithm/resize_image.cpp +++ b/src/doc/algorithm/resize_image.cpp @@ -1,5 +1,5 @@ // Aseprite Document Library -// Copyright (c) 2001-2014 David Capello +// Copyright (c) 2001-2015 David Capello // // This file is released under the terms of the MIT license. // Read LICENSE.txt for more information. @@ -24,7 +24,7 @@ void resize_image(const Image* src, Image* dst, ResizeMethod method, const Palet switch (method) { // TODO optimize this - case RESIZE_METHOD_NEAREST_NEIGHBOR: + case RESIZE_METHOD_NEAREST_NEIGHBOR: { int o_width = src->width(), o_height = src->height(); int n_width = dst->width(), n_height = dst->height(); @@ -57,8 +57,8 @@ void resize_image(const Image* src, Image* dst, ResizeMethod method, const Palet dv = (src->height()-1) * 1.0 / (dst->height()-1); for (y=0; yheight(); ++y) { for (x=0; xwidth(); ++x) { - u_floor = floor(u); - v_floor = floor(v); + u_floor = (int)floor(u); + v_floor = (int)floor(v); if (u_floor > src->width()-1) { u_floor = src->width()-1; @@ -92,34 +92,34 @@ void resize_image(const Image* src, Image* dst, ResizeMethod method, const Palet switch (dst->pixelFormat()) { case IMAGE_RGB: { - int r = ((rgba_getr(color[0])*u2 + rgba_getr(color[1])*u1)*v2 + - (rgba_getr(color[2])*u2 + rgba_getr(color[3])*u1)*v1); - int g = ((rgba_getg(color[0])*u2 + rgba_getg(color[1])*u1)*v2 + - (rgba_getg(color[2])*u2 + rgba_getg(color[3])*u1)*v1); - int b = ((rgba_getb(color[0])*u2 + rgba_getb(color[1])*u1)*v2 + - (rgba_getb(color[2])*u2 + rgba_getb(color[3])*u1)*v1); - int a = ((rgba_geta(color[0])*u2 + rgba_geta(color[1])*u1)*v2 + - (rgba_geta(color[2])*u2 + rgba_geta(color[3])*u1)*v1); + int r = int((rgba_getr(color[0])*u2 + rgba_getr(color[1])*u1)*v2 + + (rgba_getr(color[2])*u2 + rgba_getr(color[3])*u1)*v1); + int g = int((rgba_getg(color[0])*u2 + rgba_getg(color[1])*u1)*v2 + + (rgba_getg(color[2])*u2 + rgba_getg(color[3])*u1)*v1); + int b = int((rgba_getb(color[0])*u2 + rgba_getb(color[1])*u1)*v2 + + (rgba_getb(color[2])*u2 + rgba_getb(color[3])*u1)*v1); + int a = int((rgba_geta(color[0])*u2 + rgba_geta(color[1])*u1)*v2 + + (rgba_geta(color[2])*u2 + rgba_geta(color[3])*u1)*v1); dst_color = rgba(r, g, b, a); break; } case IMAGE_GRAYSCALE: { - int v = ((graya_getv(color[0])*u2 + graya_getv(color[1])*u1)*v2 + - (graya_getv(color[2])*u2 + graya_getv(color[3])*u1)*v1); - int a = ((graya_geta(color[0])*u2 + graya_geta(color[1])*u1)*v2 + - (graya_geta(color[2])*u2 + graya_geta(color[3])*u1)*v1); + int v = int((graya_getv(color[0])*u2 + graya_getv(color[1])*u1)*v2 + + (graya_getv(color[2])*u2 + graya_getv(color[3])*u1)*v1); + int a = int((graya_geta(color[0])*u2 + graya_geta(color[1])*u1)*v2 + + (graya_geta(color[2])*u2 + graya_geta(color[3])*u1)*v1); dst_color = graya(v, a); break; } case IMAGE_INDEXED: { - int r = ((rgba_getr(pal->getEntry(color[0]))*u2 + rgba_getr(pal->getEntry(color[1]))*u1)*v2 + - (rgba_getr(pal->getEntry(color[2]))*u2 + rgba_getr(pal->getEntry(color[3]))*u1)*v1); - int g = ((rgba_getg(pal->getEntry(color[0]))*u2 + rgba_getg(pal->getEntry(color[1]))*u1)*v2 + - (rgba_getg(pal->getEntry(color[2]))*u2 + rgba_getg(pal->getEntry(color[3]))*u1)*v1); - int b = ((rgba_getb(pal->getEntry(color[0]))*u2 + rgba_getb(pal->getEntry(color[1]))*u1)*v2 + - (rgba_getb(pal->getEntry(color[2]))*u2 + rgba_getb(pal->getEntry(color[3]))*u1)*v1); - int a = (((color[0] == 0 ? 0: 255)*u2 + (color[1] == 0 ? 0: 255)*u1)*v2 + - ((color[2] == 0 ? 0: 255)*u2 + (color[3] == 0 ? 0: 255)*u1)*v1); + int r = int((rgba_getr(pal->getEntry(color[0]))*u2 + rgba_getr(pal->getEntry(color[1]))*u1)*v2 + + (rgba_getr(pal->getEntry(color[2]))*u2 + rgba_getr(pal->getEntry(color[3]))*u1)*v1); + int g = int((rgba_getg(pal->getEntry(color[0]))*u2 + rgba_getg(pal->getEntry(color[1]))*u1)*v2 + + (rgba_getg(pal->getEntry(color[2]))*u2 + rgba_getg(pal->getEntry(color[3]))*u1)*v1); + int b = int((rgba_getb(pal->getEntry(color[0]))*u2 + rgba_getb(pal->getEntry(color[1]))*u1)*v2 + + (rgba_getb(pal->getEntry(color[2]))*u2 + rgba_getb(pal->getEntry(color[3]))*u1)*v1); + int a = int(((color[0] == 0 ? 0: 255)*u2 + (color[1] == 0 ? 0: 255)*u1)*v2 + + ((color[2] == 0 ? 0: 255)*u2 + (color[3] == 0 ? 0: 255)*u1)*v1); dst_color = a > 127 ? rgbmap->mapColor(r, g, b): 0; break; } diff --git a/src/doc/brush.cpp b/src/doc/brush.cpp index 0565a6dee..ae47925ac 100644 --- a/src/doc/brush.cpp +++ b/src/doc/brush.cpp @@ -1,5 +1,5 @@ // Aseprite Document Library -// Copyright (c) 2001-2014 David Capello +// Copyright (c) 2001-2015 David Capello // // This file is released under the terms of the MIT license. // Read LICENSE.txt for more information. @@ -96,7 +96,7 @@ void Brush::regenerate() int size = m_size; if (m_type == kSquareBrushType && m_angle != 0 && m_size > 2) - size = std::sqrt((double)2*m_size*m_size)+2; + size = (int)std::sqrt((double)2*m_size*m_size)+2; m_image = Image::create(IMAGE_BITMAP, size, size); @@ -121,14 +121,14 @@ void Brush::regenerate() int c = size/2; int r = m_size/2; int d = m_size; - int x1 = c + r*cos(a-PI/2) + r*cos(a-PI); - int y1 = c - r*sin(a-PI/2) - r*sin(a-PI); - int x2 = x1 + d*cos(a); - int y2 = y1 - d*sin(a); - int x3 = x2 + d*cos(a+PI/2); - int y3 = y2 - d*sin(a+PI/2); - int x4 = x3 + d*cos(a+PI); - int y4 = y3 - d*sin(a+PI); + int x1 = int(c + r*cos(a-PI/2) + r*cos(a-PI)); + int y1 = int(c - r*sin(a-PI/2) - r*sin(a-PI)); + int x2 = int(x1 + d*cos(a)); + int y2 = int(y1 - d*sin(a)); + int x3 = int(x2 + d*cos(a+PI/2)); + int y3 = int(y2 - d*sin(a+PI/2)); + int x4 = int(x3 + d*cos(a+PI)); + int y4 = int(y3 - d*sin(a+PI)); int points[8] = { x1, y1, x2, y2, x3, y3, x4, y4 }; doc::algorithm::polygon(4, points, m_image, algo_hline); @@ -137,12 +137,12 @@ void Brush::regenerate() case kLineBrushType: { double a = PI * m_angle / 180; - float r = m_size/2; - float d = m_size; - int x1 = r + r*cos(a+PI); - int y1 = r - r*sin(a+PI); - int x2 = x1 + d*cos(a); - int y2 = y1 - d*sin(a); + double r = m_size/2; + double d = m_size; + int x1 = int(r + r*cos(a+PI)); + int y1 = int(r - r*sin(a+PI)); + int x2 = int(x1 + d*cos(a)); + int y2 = int(y1 - d*sin(a)); draw_line(m_image, x1, y1, x2, y2, BitmapTraits::max_value); break; diff --git a/src/ui/int_entry.cpp b/src/ui/int_entry.cpp index 2526a0589..44a196b80 100644 --- a/src/ui/int_entry.cpp +++ b/src/ui/int_entry.cpp @@ -1,5 +1,5 @@ // Aseprite UI Library -// Copyright (C) 2001-2013 David Capello +// Copyright (C) 2001-2013, 2015 David Capello // // This file is released under the terms of the MIT license. // Read LICENSE.txt for more information. @@ -26,7 +26,7 @@ namespace ui { using namespace gfx; IntEntry::IntEntry(int min, int max) - : Entry(std::ceil(std::log10((double)max))+1, "") + : Entry(int(std::ceil(std::log10((double)max)))+1, "") , m_min(min) , m_max(max) , m_popupWindow(NULL) diff --git a/src/ui/splitter.cpp b/src/ui/splitter.cpp index ae8681017..7105fd542 100644 --- a/src/ui/splitter.cpp +++ b/src/ui/splitter.cpp @@ -1,5 +1,5 @@ // Aseprite UI Library -// Copyright (C) 2001-2013 David Capello +// Copyright (C) 2001-2013, 2015 David Capello // // This file is released under the terms of the MIT license. // Read LICENSE.txt for more information. @@ -189,10 +189,10 @@ void Splitter::onResize(ResizeEvent& ev) pos.y = rect.y; \ switch (m_type) { \ case ByPercentage: \ - pos.w = avail*m_pos/100; \ + pos.w = int(avail*m_pos/100); \ break; \ case ByPixel: \ - pos.w = m_pos; \ + pos.w = int(m_pos); \ break; \ } \ \