Enable -Wfloat-conversion on Clang.
This is a high-SNR warning that's enabled by default on MSVC and it has highlighted some bugs in glhelper.cpp (that are also fixed in this commit). Unfortunately GCC does not have an equivalent for that warning, and -Wconversion is very noisy.pull/10/head
parent
69b8a3b3b3
commit
fbc5bfc27f
|
@ -55,6 +55,9 @@ endif()
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||||
set(WARNING_FLAGS "-Wall -Wextra -Wno-unused-parameter")
|
set(WARNING_FLAGS "-Wall -Wextra -Wno-unused-parameter")
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||||
|
set(WARNING_FLAGS "${WARNING_FLAGS} -Wfloat-conversion")
|
||||||
|
endif()
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS}")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${WARNING_FLAGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${WARNING_FLAGS}")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -713,7 +713,7 @@ double ssglStrWidth(const std::string &str, double h)
|
||||||
{
|
{
|
||||||
LoadVectorFont();
|
LoadVectorFont();
|
||||||
|
|
||||||
int width = 0;
|
double width = 0;
|
||||||
for(char32_t codepoint : ReadUTF8(str)) {
|
for(char32_t codepoint : ReadUTF8(str)) {
|
||||||
width += BuiltinVectorFont.GetGlyph(codepoint).advanceWidth;
|
width += BuiltinVectorFont.GetGlyph(codepoint).advanceWidth;
|
||||||
}
|
}
|
||||||
|
@ -728,11 +728,11 @@ static Vector PixelAlign(Vector v) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int DrawCharacter(const VectorFont::Glyph &glyph, Vector t, Vector o, Vector u, Vector v,
|
static double DrawCharacter(const VectorFont::Glyph &glyph, Vector t, Vector o, Vector u, Vector v,
|
||||||
double scale, ssglLineFn *fn, void *fndata, bool gridFit) {
|
double scale, ssglLineFn *fn, void *fndata, bool gridFit) {
|
||||||
int advanceWidth = glyph.advanceWidth;
|
double advanceWidth = glyph.advanceWidth;
|
||||||
|
|
||||||
int actualWidth, offsetX;
|
double actualWidth, offsetX;
|
||||||
if(gridFit) {
|
if(gridFit) {
|
||||||
o.x += glyph.leftSideBearing;
|
o.x += glyph.leftSideBearing;
|
||||||
offsetX = glyph.leftSideBearing;
|
offsetX = glyph.leftSideBearing;
|
||||||
|
|
|
@ -1294,7 +1294,7 @@ void GraphicsWindow::MouseLeftDoubleClick(double mx, double my) {
|
||||||
hStyle hs = c->disp.style;
|
hStyle hs = c->disp.style;
|
||||||
if(hs.v == 0) hs.v = Style::CONSTRAINT;
|
if(hs.v == 0) hs.v = Style::CONSTRAINT;
|
||||||
ShowGraphicsEditControl((int)p2.x, (int)p2.y,
|
ShowGraphicsEditControl((int)p2.x, (int)p2.y,
|
||||||
ssglStrFontSize(Style::TextHeight(hs)) * scale,
|
(int)(ssglStrFontSize(Style::TextHeight(hs)) * scale),
|
||||||
editMinWidthChar, editValue);
|
editMinWidthChar, editValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -637,11 +637,11 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int _w, _h;
|
int _w, _h;
|
||||||
void ij_to_xy(int i, int j, int &x, int &y) {
|
void ij_to_xy(double i, double j, int &x, int &y) {
|
||||||
// Convert to xy (vs. ij) style coordinates,
|
// Convert to xy (vs. ij) style coordinates,
|
||||||
// with (0, 0) at center
|
// with (0, 0) at center
|
||||||
x = i - _w / 2;
|
x = (int)i - _w / 2;
|
||||||
y = _h / 2 - j;
|
y = _h / 2 - (int)j;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1376,7 +1376,7 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void on_scrollbar_value_changed() {
|
virtual void on_scrollbar_value_changed() {
|
||||||
SS.TW.ScrollbarEvent(_scrollbar.get_adjustment()->get_value());
|
SS.TW.ScrollbarEvent((int)_scrollbar.get_adjustment()->get_value());
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void on_editing_done(Glib::ustring value) {
|
virtual void on_editing_done(Glib::ustring value) {
|
||||||
|
|
|
@ -88,7 +88,7 @@ static Pixmap ReadPNGIntoPixmap(png_struct *png_ptr, png_info *info_ptr) {
|
||||||
Pixmap pixmap = {};
|
Pixmap pixmap = {};
|
||||||
pixmap.width = png_get_image_width(png_ptr, info_ptr);
|
pixmap.width = png_get_image_width(png_ptr, info_ptr);
|
||||||
pixmap.height = png_get_image_height(png_ptr, info_ptr);
|
pixmap.height = png_get_image_height(png_ptr, info_ptr);
|
||||||
pixmap.hasAlpha = png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_ALPHA;
|
pixmap.hasAlpha = (png_get_color_type(png_ptr, info_ptr) & PNG_COLOR_MASK_ALPHA) != 0;
|
||||||
|
|
||||||
size_t stride = pixmap.width * pixmap.GetBytesPerPixel();
|
size_t stride = pixmap.width * pixmap.GetBytesPerPixel();
|
||||||
if(stride % 4 != 0) stride += 4 - stride % 4;
|
if(stride % 4 != 0) stride += 4 - stride % 4;
|
||||||
|
|
Loading…
Reference in New Issue