diff --git a/ChangeLog b/ChangeLog index c42c0680..34cacf92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-10-16 Markus Gans + * Fixed: calculator behavior for negative values + in trigonometric functions + 2015-10-13 Markus Gans * Reduce the number of getParent() function calls for print operations diff --git a/src/fbutton.cpp b/src/fbutton.cpp index f3f2b2f8..fc28e852 100644 --- a/src/fbutton.cpp +++ b/src/fbutton.cpp @@ -116,7 +116,7 @@ void FButton::setHotkeyAccelerator() } //---------------------------------------------------------------------- -void FButton::detectHotkey() +inline void FButton::detectHotkey() { if ( isEnabled() ) { diff --git a/src/fterm.cpp b/src/fterm.cpp index 28d78d12..28fddb12 100644 --- a/src/fterm.cpp +++ b/src/fterm.cpp @@ -1921,7 +1921,7 @@ void FTerm::restoreVTerm (int x, int y, int w, int h) } //---------------------------------------------------------------------- -bool FTerm::isCovered(const FPoint& pos, FTerm::term_area* area) const +inline bool FTerm::isCovered(const FPoint& pos, FTerm::term_area* area) const { if ( area == 0 ) return false; @@ -2085,7 +2085,7 @@ void FTerm::setUpdateVTerm (bool on) } //---------------------------------------------------------------------- -void FTerm::getArea (const FPoint& pos, FTerm::term_area* area) +inline void FTerm::getArea (const FPoint& pos, FTerm::term_area* area) { if ( area == 0 ) return; @@ -2129,7 +2129,7 @@ void FTerm::getArea (int ax, int ay, FTerm::term_area* area) } //---------------------------------------------------------------------- -void FTerm::getArea (const FRect& box, FTerm::term_area* area) +inline void FTerm::getArea (const FRect& box, FTerm::term_area* area) { getArea ( box.getX() , box.getY() @@ -2251,7 +2251,7 @@ void FTerm::putArea (int ax, int ay, FTerm::term_area* area) } //---------------------------------------------------------------------- -FTerm::char_data FTerm::getCoveredCharacter (const FPoint& pos, FTerm* obj) +inline FTerm::char_data FTerm::getCoveredCharacter (const FPoint& pos, FTerm* obj) { return getCoveredCharacter (pos.getX(), pos.getY(), obj); } @@ -2316,7 +2316,7 @@ FTerm::char_data FTerm::getCoveredCharacter (int x, int y, FTerm* obj) // public methods of FTerm //---------------------------------------------------------------------- -FTerm::term_area* FTerm::getVWin() const +inline FTerm::term_area* FTerm::getVWin() const { return vwin; } @@ -4129,14 +4129,14 @@ int FTerm::appendLowerRight (char_data*& screen_char) } //---------------------------------------------------------------------- -void FTerm::appendOutputBuffer (std::string& s) +inline void FTerm::appendOutputBuffer (std::string& s) { const char* c_string = s.c_str(); tputs (c_string, 1, appendOutputBuffer); } //---------------------------------------------------------------------- -void FTerm::appendOutputBuffer (const char* s) +inline void FTerm::appendOutputBuffer (const char* s) { tputs (s, 1, appendOutputBuffer); } @@ -4178,7 +4178,7 @@ void FTerm::putstringf (const char* format, ...) } //---------------------------------------------------------------------- -void FTerm::putstring (const char* s, int affcnt) +inline void FTerm::putstring (const char* s, int affcnt) { tputs (s, affcnt, putchar); } diff --git a/src/fwidget.cpp b/src/fwidget.cpp index 2b7c1d58..958e5349 100644 --- a/src/fwidget.cpp +++ b/src/fwidget.cpp @@ -182,7 +182,7 @@ void FWidget::finish() } //---------------------------------------------------------------------- -void FWidget::processDestroy() +inline void FWidget::processDestroy() { emitCallback("destroy"); } @@ -308,7 +308,7 @@ void FWidget::setColorTheme() wc.label_hotkey_fg = fc::Red; wc.label_hotkey_bg = fc::LightGray; wc.label_emphasis_fg = fc::Blue; - wc.label_ellipsis_fg = fc::DarkGray; + wc.label_ellipsis_fg = fc::Black; wc.inputfield_active_focus_fg = fc::LightGray; wc.inputfield_active_focus_bg = fc::Blue; wc.inputfield_active_fg = fc::Black; @@ -338,7 +338,7 @@ void FWidget::setColorTheme() wc.menu_active_focus_bg = fc::Blue; wc.menu_active_fg = fc::Black; wc.menu_active_bg = fc::LightGray; - wc.menu_inactive_fg = fc::DarkGray; + wc.menu_inactive_fg = fc::Cyan; wc.menu_inactive_bg = fc::LightGray; wc.menu_hotkey_fg = fc::Red; wc.menu_hotkey_bg = fc::LightGray; @@ -387,7 +387,7 @@ FTerm::term_area* FWidget::getPrintArea() } //---------------------------------------------------------------------- -void FWidget::setPrintArea(term_area* area) +inline void FWidget::setPrintArea(term_area* area) { print_area = area; } @@ -826,21 +826,21 @@ FWidget* FWidget::getRootWidget() const } //---------------------------------------------------------------------- -FWidget* FWidget::getMainWidget() +inline FWidget* FWidget::getMainWidget() { FWidget* main_widget = static_cast(FApplication::main_widget); return main_widget; } //---------------------------------------------------------------------- -void FWidget::setMainWidget(FWidget* obj) +inline void FWidget::setMainWidget(FWidget* obj) { FApplication* fapp = static_cast(rootObject); fapp->setMainWidget(obj); } //---------------------------------------------------------------------- -FWidget* FWidget::childWidgetAt (FWidget* p, const FPoint& pos) +inline FWidget* FWidget::childWidgetAt (FWidget* p, const FPoint& pos) { return childWidgetAt (p, pos.getX(), pos.getY()); } @@ -875,27 +875,27 @@ FWidget* FWidget::childWidgetAt (FWidget* p, int x, int y) } //---------------------------------------------------------------------- -FWidget* FWidget::getFocusWidget() const +inline FWidget* FWidget::getFocusWidget() const { FWidget* focus_widget = static_cast(FApplication::focus_widget); return focus_widget; } //---------------------------------------------------------------------- -void FWidget::setFocusWidget(FWidget* obj) +inline void FWidget::setFocusWidget(FWidget* obj) { FApplication::focus_widget = obj; } //---------------------------------------------------------------------- -FWidget* FWidget::getClickedWidget() +inline FWidget* FWidget::getClickedWidget() { FWidget* clicked_widget = static_cast(FApplication::clicked_widget); return clicked_widget; } //---------------------------------------------------------------------- -void FWidget::setClickedWidget(FWidget* obj) +inline void FWidget::setClickedWidget(FWidget* obj) { FApplication::clicked_widget = obj; } @@ -1331,13 +1331,13 @@ void FWidget::hide() } //---------------------------------------------------------------------- -bool FWidget::setEnable(bool on) +inline bool FWidget::setEnable(bool on) { return enable = (on) ? true : false; } //---------------------------------------------------------------------- -bool FWidget::setVisibleCursor(bool on) +inline bool FWidget::setVisibleCursor(bool on) { return visibleCursor = (on) ? true : false; } @@ -1514,7 +1514,7 @@ void FWidget::setY (int y, bool adjust) } //---------------------------------------------------------------------- -void FWidget::setPos (const FPoint& p, bool adjust) +inline void FWidget::setPos (const FPoint& p, bool adjust) { setPos (p.getX(), p.getY(), adjust); } @@ -1669,7 +1669,7 @@ void FWidget::setTermGeometry (int w, int h) } //---------------------------------------------------------------------- -void FWidget::setGeometry (const FRect& box, bool adjust) +inline void FWidget::setGeometry (const FRect& box, bool adjust) { setGeometry ( box.getX() , box.getY() @@ -1721,7 +1721,7 @@ void FWidget::setGeometry (int x, int y, int w, int h, bool adjust) } //---------------------------------------------------------------------- -void FWidget::move (const FPoint& pos) +inline void FWidget::move (const FPoint& pos) { move( pos.getX(), pos.getY() ); } @@ -1779,19 +1779,19 @@ bool FWidget::setCursorPos (register int x, register int y) } //---------------------------------------------------------------------- -void FWidget::unsetCursorPos() +inline void FWidget::unsetCursorPos() { widgetCursorPosition.setPoint(-1,-1); } //---------------------------------------------------------------------- -void FWidget::gotoxy (const FPoint& pos) +inline void FWidget::gotoxy (const FPoint& pos) { gotoxy (pos.getX(), pos.getY()); } //---------------------------------------------------------------------- -void FWidget::gotoxy (register int x, register int y) +inline void FWidget::gotoxy (register int x, register int y) { cursor->setPoint(x,y); } @@ -1842,19 +1842,19 @@ void FWidget::clrscr() } //---------------------------------------------------------------------- -bool FWidget::setBold (register bool on) +inline bool FWidget::setBold (register bool on) { return (bold = on); } //---------------------------------------------------------------------- -bool FWidget::setReverse (register bool on) +inline bool FWidget::setReverse (register bool on) { return (reverse = on); } //---------------------------------------------------------------------- -bool FWidget::setUnderline (register bool on) +inline bool FWidget::setUnderline (register bool on) { return (underline = on); } @@ -2264,7 +2264,7 @@ void FWidget::drawBorder() } //---------------------------------------------------------------------- -void FWidget::quit() +inline void FWidget::quit() { FApplication* fapp = static_cast(rootObject); fapp->exit(0); diff --git a/test/calculator.cpp b/test/calculator.cpp index 273be979..aca4affe 100644 --- a/test/calculator.cpp +++ b/test/calculator.cpp @@ -582,7 +582,7 @@ void Calc::cb_buttonClicked (FWidget*, void* data_ptr) { if ( arcus_mode ) *x = asin(*x) * 180.0L/PI; - else if ( fmod(*x,180.0L) < LDBL_EPSILON ) // x/180 = 0 + else if ( fabs(fmod(*x,180.0L)) < LDBL_EPSILON ) // x/180 = 0 *x = 0.0L; else *x = sin(*x * PI/180.0L); @@ -614,7 +614,7 @@ void Calc::cb_buttonClicked (FWidget*, void* data_ptr) { if ( arcus_mode ) *x = acos(*x) * 180.0L/PI; - else if ( fmod(*x - 90.0L,180.0L) < LDBL_EPSILON ) // (x - 90)/180 == 0 + else if ( fabs(fmod(*x - 90.0L,180.0L)) < LDBL_EPSILON ) // (x - 90)/180 == 0 *x = 0.0L; else *x = cos(*x * PI/180.0L); @@ -649,9 +649,10 @@ void Calc::cb_buttonClicked (FWidget*, void* data_ptr) *x = atan(*x) * 180.0L/PI; else // Test if (x/180) != 0 and x/90 == 0 - if ( fmod(*x,180.0L) > LDBL_EPSILON && fmod(*x,90.0L) < LDBL_EPSILON ) + if ( fabs(fmod(*x,180.0L)) > LDBL_EPSILON + && fabs(fmod(*x,90.0L)) < LDBL_EPSILON ) error = true; - else if ( fmod(*x,180.0L) < LDBL_EPSILON ) // x/180 == 0 + else if ( fabs(fmod(*x,180.0L)) < LDBL_EPSILON ) // x/180 == 0 *x = 0.0L; else *x = tan(*x * PI/180.0L);