A small benchmakt test was added to the Rotozoomer example
This commit is contained in:
parent
86ccd30eae
commit
4c0404ac60
|
@ -1,3 +1,6 @@
|
|||
2020-03-22 Markus Gans <guru.mail@muenster.de>
|
||||
* A small benchmakt test was added to the Rotozoomer example
|
||||
|
||||
2020-03-08 Markus Gans <guru.mail@muenster.de>
|
||||
* A rotozoomer example was added to demonstrate the drawing speed
|
||||
of FINAL CUT
|
||||
|
|
|
@ -77,6 +77,11 @@ The calculator example in newfont mode:
|
|||
![calculator](doc/calculator.png)
|
||||
|
||||
|
||||
Benchmark
|
||||
---------
|
||||
Here you can find a test for ![measuring the character speed](doc/benchmark.md) in the terminal.
|
||||
|
||||
|
||||
Virtual terminal
|
||||
----------------
|
||||
FINAL CUT uses a virtual terminal to print character via an update method on the screen. It provides (as an overlying layer) virtual windows for the realization of window movements. The update methods only transfer differences to the virtual terminal or physical screen.
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
Benchmark
|
||||
=========
|
||||
|
||||
The Rotozoomer example can perform a benchmark run with the parameter "-b" to determine the FINAL CUT character speed in the terminal.
|
||||
|
||||
|
||||
[![rotozoomer-benchmark](https://asciinema.org/a/voRnNvr7M97BxiDWVhMr3IVIN.svg)](https://asciinema.org/a/voRnNvr7M97BxiDWVhMr3IVIN)
|
||||
|
||||
|
||||
Speed tests
|
||||
-----------
|
||||
|
||||
| Terminal | Size | Time | Loops | Frame rate |
|
||||
|--------------------|-------|---------|-------|------------|
|
||||
| XTerm | 80x24 | 2.693ms | 314 | 116.598fps |
|
||||
| PuTTY | 80x24 | 2.711ms | 314 | 115.824fps |
|
||||
| Mintty | 80x24 | 2.799ms | 314 | 112.182fps |
|
||||
| Cygwin (cmd) | 80x24 | 2.99ms | 314 | 105.016fps |
|
||||
| rxvt-cygwin-native | 80x24 | 2.836ms | 314 | 110.719fps |
|
||||
| rxvt | 80x24 | 3.064ms | 314 | 102.480fps |
|
||||
| rxvt-unicode | 80x24 | 2.853ms | 314 | 110.059fps |
|
||||
| Tera Term | 80x24 | 3.154ms | 314 | 99.5561fps |
|
||||
| Konsole | 80x24 | 2.727ms | 314 | 115.144fps |
|
||||
| GNOME-Terminal | 80x24 | 2.683ms | 314 | 117.033fps |
|
||||
| Linux console | 80x25 | 2.757ms | 314 | 113.891fps |
|
||||
| FreeBSD console | 80x25 | 2.726ms | 314 | 115.187fps |
|
||||
| NetBSD console | 80x25 | 2.747ms | 314 | 114.306fps |
|
||||
| OpenBSD console | 80x25 | 2.751ms | 314 | 114.140fps |
|
||||
| Solaris console | 80x34 | 3.072ms | 314 | 102.213fps |
|
||||
|
|
@ -10,6 +10,14 @@ Formatting
|
|||
* Use one blank line before and after a for, if, switch,
|
||||
while, do..while code block
|
||||
* In parameter lists, leave a space after each comma
|
||||
* Starting curly brace "{" in a new line
|
||||
|
||||
Naming
|
||||
------
|
||||
* class name: upperCamelCase
|
||||
* Function: lowerCamelCase
|
||||
* Callback function: cb_lowerCamelCase (beginning with "cb_" as prefix)
|
||||
* Variable: lower_case_underscored
|
||||
|
||||
Class declaration order
|
||||
-----------------------
|
||||
|
|
|
@ -20,11 +20,15 @@
|
|||
* <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************/
|
||||
|
||||
#include <chrono>
|
||||
#include <iomanip>
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include <final/final.h>
|
||||
|
||||
namespace fc = finalcut::fc;
|
||||
using namespace std::chrono;
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FSize;
|
||||
|
||||
|
@ -42,11 +46,14 @@ class RotoZoomer : public finalcut::FDialog
|
|||
{
|
||||
public:
|
||||
// Constructor
|
||||
explicit RotoZoomer (finalcut::FWidget* = nullptr);
|
||||
explicit RotoZoomer (finalcut::FWidget* = nullptr, bool = false, int = 314);
|
||||
|
||||
// Destructor
|
||||
~RotoZoomer() override;
|
||||
|
||||
// Accessors
|
||||
finalcut::FString getReport();
|
||||
|
||||
// Event handlers
|
||||
void onShow (finalcut::FShowEvent*) override;
|
||||
void onTimer (finalcut::FTimerEvent*) override;
|
||||
|
@ -57,17 +64,25 @@ class RotoZoomer : public finalcut::FDialog
|
|||
// Methods
|
||||
void draw() override;
|
||||
void rotozoomer (double, double, double, double);
|
||||
void generateReport();
|
||||
void adjustSize() override;
|
||||
|
||||
// Data member
|
||||
wchar_t data[256]{};
|
||||
bool benchmark{false};
|
||||
int loops{0};
|
||||
int path{0};
|
||||
wchar_t data[256]{};
|
||||
finalcut::FString report;
|
||||
time_point<system_clock> start{};
|
||||
time_point<system_clock> end{};
|
||||
};
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
RotoZoomer::RotoZoomer (finalcut::FWidget* parent)
|
||||
RotoZoomer::RotoZoomer (finalcut::FWidget* parent, bool b, int i)
|
||||
: finalcut::FDialog(parent)
|
||||
, benchmark(b)
|
||||
, loops(i)
|
||||
{
|
||||
setText ("Rotozoomer effect");
|
||||
|
||||
|
@ -107,12 +122,14 @@ RotoZoomer::~RotoZoomer()
|
|||
//----------------------------------------------------------------------
|
||||
void RotoZoomer::draw()
|
||||
{
|
||||
if ( benchmark && start == time_point<system_clock>() )
|
||||
start = system_clock::now();
|
||||
|
||||
finalcut::FDialog::draw();
|
||||
double cx = double(80.0 / 2.0 + (80.0 / 2.0 * std::sin(double(path) / 50.0)));
|
||||
double cy = double(23.0 + (23.0 * std::cos(double(path) / 50.0)));
|
||||
double r = double(128.0 + 96.0 * std::cos(double(path) / 10.0));
|
||||
double a = double(path) / 50.0;
|
||||
print() << finalcut::FColorPair(fc::White, fc::Black);
|
||||
rotozoomer (cx, cy, r, a);
|
||||
}
|
||||
|
||||
|
@ -159,16 +176,61 @@ void RotoZoomer::rotozoomer (double cx, double cy, double r, double a)
|
|||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void RotoZoomer::generateReport()
|
||||
{
|
||||
finalcut::FString term_type = getTermType();
|
||||
finalcut::FString dimension_str{};
|
||||
finalcut::FString time_str{};
|
||||
finalcut::FString fps_str{};
|
||||
std::wostringstream rep;
|
||||
dimension_str << getDesktopWidth()
|
||||
<< "x" << getDesktopHeight();
|
||||
int elapsed_ms = duration_cast<milliseconds>(end - start).count();
|
||||
time_str << double(elapsed_ms) / 1000 << "ms";
|
||||
fps_str << double(loops) * 1000.0 / double(elapsed_ms);
|
||||
|
||||
rep << finalcut::FString(55, '-') << "\n"
|
||||
<< "Terminal Size Time Loops Frame rate\n"
|
||||
<< finalcut::FString(55, '-') << "\n"
|
||||
<< std::left << std::setw(20) << term_type
|
||||
<< std::setw(8) << dimension_str
|
||||
<< std::setw(10) << time_str
|
||||
<< std::setw(7) << loops
|
||||
<< std::setw(7) << fps_str.left(7) << "fps\n";
|
||||
report << rep.str();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
inline finalcut::FString RotoZoomer::getReport()
|
||||
{
|
||||
return report;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void RotoZoomer::onShow (finalcut::FShowEvent*)
|
||||
{
|
||||
if ( ! benchmark )
|
||||
addTimer(33);
|
||||
else
|
||||
{
|
||||
for (path = 1; path < loops; path++)
|
||||
{
|
||||
redraw();
|
||||
updateTerminal();
|
||||
}
|
||||
|
||||
end = system_clock::now();
|
||||
generateReport();
|
||||
flush();
|
||||
quit();
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void RotoZoomer::onTimer (finalcut::FTimerEvent*)
|
||||
{
|
||||
if ( path >= 314 )
|
||||
if ( path >= 314 ) // More than 360 degrees
|
||||
path = 0;
|
||||
else
|
||||
path++;
|
||||
|
@ -196,11 +258,14 @@ void RotoZoomer::onKeyPress (finalcut::FKeyEvent* ev)
|
|||
//----------------------------------------------------------------------
|
||||
void RotoZoomer::onClose (finalcut::FCloseEvent* ev)
|
||||
{
|
||||
if ( ! benchmark )
|
||||
finalcut::FApplication::closeConfirmationDialog (this, ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void RotoZoomer::adjustSize()
|
||||
{
|
||||
if ( ! benchmark )
|
||||
{
|
||||
std::size_t h = getDesktopHeight();
|
||||
std::size_t w = getDesktopWidth();
|
||||
|
@ -212,6 +277,8 @@ void RotoZoomer::adjustSize()
|
|||
w -= 8;
|
||||
|
||||
setGeometry(FPoint(5, 1), FSize(w, h), false);
|
||||
}
|
||||
|
||||
finalcut::FDialog::adjustSize();
|
||||
}
|
||||
|
||||
|
@ -219,20 +286,55 @@ void RotoZoomer::adjustSize()
|
|||
// main part
|
||||
//----------------------------------------------------------------------
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
constexpr int iterations = 314;
|
||||
bool benchmark{false};
|
||||
finalcut::FString report{};
|
||||
int quit_code{0};
|
||||
|
||||
if ( argv[1] && ( strcmp(argv[1], "--help") == 0
|
||||
|| strcmp(argv[1], "-h") == 0 ) )
|
||||
{
|
||||
std::cout << "RotoZoomer options:\n"
|
||||
<< " -b, --benchmark "
|
||||
<< "Starting a benchmark run\n\n";
|
||||
}
|
||||
else if ( argv[1] && ( strcmp(argv[1], "--benchmark") == 0
|
||||
|| strcmp(argv[1], "-b") == 0 ) )
|
||||
{
|
||||
benchmark = true;
|
||||
}
|
||||
|
||||
{
|
||||
// Create the application object
|
||||
finalcut::FApplication app(argc, argv);
|
||||
app.setNonBlockingRead();
|
||||
|
||||
// Create a simple dialog box
|
||||
RotoZoomer p(&app);
|
||||
p.setGeometry (FPoint(5, 1), FSize(72, 23));
|
||||
p.setShadow();
|
||||
RotoZoomer roto(&app, benchmark, iterations);
|
||||
|
||||
if ( benchmark )
|
||||
roto.setGeometry (FPoint(1, 1), FSize(80, 24));
|
||||
else
|
||||
roto.setGeometry (FPoint(5, 1), FSize(72, 23));
|
||||
|
||||
roto.setShadow();
|
||||
|
||||
// Set the RotoZoomer object as main widget
|
||||
app.setMainWidget(&p);
|
||||
app.setMainWidget(&roto);
|
||||
|
||||
// Show and start the application
|
||||
p.show();
|
||||
return app.exec();
|
||||
roto.show();
|
||||
quit_code = app.exec();
|
||||
|
||||
if ( benchmark )
|
||||
report = roto.getReport();
|
||||
}
|
||||
|
||||
if ( benchmark )
|
||||
{
|
||||
std::cout << "Benchmark:\n" << report;
|
||||
}
|
||||
|
||||
return quit_code;
|
||||
}
|
||||
|
|
|
@ -54,10 +54,10 @@ class Scrollview : public finalcut::FScrollView
|
|||
void draw() override;
|
||||
|
||||
// Callback methods
|
||||
void cb_go_east (finalcut::FWidget*, FDataPtr);
|
||||
void cb_go_south (finalcut::FWidget*, FDataPtr);
|
||||
void cb_go_west (finalcut::FWidget*, FDataPtr);
|
||||
void cb_go_north (finalcut::FWidget*, FDataPtr);
|
||||
void cb_goEast (finalcut::FWidget*, FDataPtr);
|
||||
void cb_goSouth (finalcut::FWidget*, FDataPtr);
|
||||
void cb_goWest (finalcut::FWidget*, FDataPtr);
|
||||
void cb_goNorth (finalcut::FWidget*, FDataPtr);
|
||||
|
||||
// Data members
|
||||
wchar_t pointer_right{fc::BlackRightPointingPointer};
|
||||
|
@ -88,25 +88,25 @@ Scrollview::Scrollview (finalcut::FWidget* parent)
|
|||
go_east.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_go_east)
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_goEast)
|
||||
);
|
||||
|
||||
go_south.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_go_south)
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_goSouth)
|
||||
);
|
||||
|
||||
go_west.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_go_west)
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_goWest)
|
||||
);
|
||||
|
||||
go_north.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_go_north)
|
||||
F_METHOD_CALLBACK (this, &Scrollview::cb_goNorth)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -150,7 +150,7 @@ void Scrollview::draw()
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Scrollview::cb_go_east (finalcut::FWidget*, FDataPtr)
|
||||
void Scrollview::cb_goEast (finalcut::FWidget*, FDataPtr)
|
||||
{
|
||||
scrollToX (int(getScrollWidth() - getViewportWidth()) + 1);
|
||||
go_south.setFocus();
|
||||
|
@ -159,7 +159,7 @@ void Scrollview::cb_go_east (finalcut::FWidget*, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Scrollview::cb_go_south (finalcut::FWidget*, FDataPtr)
|
||||
void Scrollview::cb_goSouth (finalcut::FWidget*, FDataPtr)
|
||||
{
|
||||
scrollToY (int(getScrollHeight() - getViewportHeight()) + 1);
|
||||
go_west.setFocus();
|
||||
|
@ -168,7 +168,7 @@ void Scrollview::cb_go_south (finalcut::FWidget*, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Scrollview::cb_go_west (finalcut::FWidget*, FDataPtr)
|
||||
void Scrollview::cb_goWest (finalcut::FWidget*, FDataPtr)
|
||||
{
|
||||
scrollToX (1);
|
||||
go_north.setFocus();
|
||||
|
@ -177,7 +177,7 @@ void Scrollview::cb_go_west (finalcut::FWidget*, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Scrollview::cb_go_north (finalcut::FWidget*, FDataPtr)
|
||||
void Scrollview::cb_goNorth (finalcut::FWidget*, FDataPtr)
|
||||
{
|
||||
scrollToY (1);
|
||||
go_east.setFocus();
|
||||
|
|
|
@ -293,7 +293,7 @@ class MyDialog : public finalcut::FDialog
|
|||
void cb_clearInput (finalcut::FWidget*, FDataPtr);
|
||||
void cb_input2buttonText (finalcut::FWidget*, FDataPtr);
|
||||
void cb_setTitlebar (finalcut::FWidget*, FDataPtr);
|
||||
void cb_ProgressBar (finalcut::FWidget*, FDataPtr);
|
||||
void cb_showProgressBar (finalcut::FWidget*, FDataPtr);
|
||||
void cb_updateNumber (finalcut::FWidget*, FDataPtr);
|
||||
void cb_activateButton (finalcut::FWidget*, FDataPtr);
|
||||
void cb_view (finalcut::FWidget*, FDataPtr);
|
||||
|
@ -671,7 +671,7 @@ void MyDialog::initButtons()
|
|||
MyButton5.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_METHOD_CALLBACK (this, &MyDialog::cb_ProgressBar)
|
||||
F_METHOD_CALLBACK (this, &MyDialog::cb_showProgressBar)
|
||||
);
|
||||
|
||||
MyButton6.addCallback
|
||||
|
@ -907,7 +907,7 @@ void MyDialog::cb_setTitlebar (finalcut::FWidget* widget, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void MyDialog::cb_ProgressBar (finalcut::FWidget*, FDataPtr)
|
||||
void MyDialog::cb_showProgressBar (finalcut::FWidget*, FDataPtr)
|
||||
{
|
||||
auto p_dgl = new ProgressDialog(this);
|
||||
p_dgl->show();
|
||||
|
|
|
@ -99,7 +99,7 @@ void FLabel::setAccelWidget (FWidget* widget)
|
|||
accel_widget->addCallback
|
||||
(
|
||||
"destroy",
|
||||
F_METHOD_CALLBACK (this, &FLabel::cb_accel_widget_destroyed)
|
||||
F_METHOD_CALLBACK (this, &FLabel::cb_accelWidgetDestroyed)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -234,7 +234,7 @@ void FLabel::onAccel (FAccelEvent* ev)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FLabel::cb_accel_widget_destroyed (FWidget*, FDataPtr)
|
||||
void FLabel::cb_accelWidgetDestroyed (FWidget*, FDataPtr)
|
||||
{
|
||||
accel_widget = nullptr;
|
||||
delAccelerator();
|
||||
|
|
|
@ -652,8 +652,8 @@ inline FString& FListBox::getString (listBoxItems::iterator iter)
|
|||
//----------------------------------------------------------------------
|
||||
void FListBox::init()
|
||||
{
|
||||
initScrollbar (vbar, fc::vertical, this, &FListBox::cb_VBarChange);
|
||||
initScrollbar (hbar, fc::horizontal, this, &FListBox::cb_HBarChange);
|
||||
initScrollbar (vbar, fc::vertical, this, &FListBox::cb_vbarChange);
|
||||
initScrollbar (hbar, fc::horizontal, this, &FListBox::cb_hbarChange);
|
||||
setGeometry (FPoint(1, 1), FSize(5, 4), false); // initialize geometry values
|
||||
const auto& wc = getFWidgetColors();
|
||||
setForegroundColor (wc.dialog_fg);
|
||||
|
@ -1745,7 +1745,7 @@ void FListBox::lazyConvert(listBoxItems::iterator iter, int y)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FListBox::cb_VBarChange (FWidget*, FDataPtr)
|
||||
void FListBox::cb_vbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
FScrollbar::sType scrollType;
|
||||
const std::size_t current_before = current;
|
||||
|
@ -1808,7 +1808,7 @@ void FListBox::cb_VBarChange (FWidget*, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FListBox::cb_HBarChange (FWidget*, FDataPtr)
|
||||
void FListBox::cb_hbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
static constexpr int padding_space = 2; // 1 leading space + 1 trailing space
|
||||
static constexpr int wheel_distance = 4;
|
||||
|
|
|
@ -1454,8 +1454,8 @@ void FListView::adjustSize()
|
|||
//----------------------------------------------------------------------
|
||||
void FListView::init()
|
||||
{
|
||||
initScrollbar (vbar, fc::vertical, this, &FListView::cb_VBarChange);
|
||||
initScrollbar (hbar, fc::horizontal, this, &FListView::cb_HBarChange);
|
||||
initScrollbar (vbar, fc::vertical, this, &FListView::cb_vbarChange);
|
||||
initScrollbar (hbar, fc::horizontal, this, &FListView::cb_hbarChange);
|
||||
selflist.push_back(this);
|
||||
root = selflist.begin();
|
||||
null_iter = selflist.end();
|
||||
|
@ -2791,7 +2791,7 @@ void FListView::scrollBy (int dx, int dy)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FListView::cb_VBarChange (FWidget*, FDataPtr)
|
||||
void FListView::cb_vbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
FScrollbar::sType scrollType = vbar->getScrollType();
|
||||
static constexpr int wheel_distance = 4;
|
||||
|
@ -2850,7 +2850,7 @@ void FListView::cb_VBarChange (FWidget*, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FListView::cb_HBarChange (FWidget*, FDataPtr)
|
||||
void FListView::cb_hbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
FScrollbar::sType scrollType = hbar->getScrollType();
|
||||
static constexpr int wheel_distance = 4;
|
||||
|
|
|
@ -319,7 +319,7 @@ void FMenu::onMouseMove (FMouseEvent* ev)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FMenu::cb_menuitem_toggled (FWidget* widget, FDataPtr)
|
||||
void FMenu::cb_menuitemToggled (FWidget* widget, FDataPtr)
|
||||
{
|
||||
const auto& m_item = static_cast<FMenuItem*>(widget);
|
||||
|
||||
|
|
|
@ -218,7 +218,7 @@ void FMenuBar::onAccel (FAccelEvent* ev)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FMenuBar::cb_item_deactivated (FWidget* widget, FDataPtr)
|
||||
void FMenuBar::cb_itemDeactivated (FWidget* widget, FDataPtr)
|
||||
{
|
||||
auto menuitem = static_cast<FMenuItem*>(widget);
|
||||
|
||||
|
|
|
@ -544,7 +544,7 @@ void FMenuItem::init (FWidget* parent)
|
|||
addCallback // for this element
|
||||
(
|
||||
"deactivate",
|
||||
F_METHOD_CALLBACK (menubar_ptr, &FMenuBar::cb_item_deactivated)
|
||||
F_METHOD_CALLBACK (menubar_ptr, &FMenuBar::cb_itemDeactivated)
|
||||
);
|
||||
}
|
||||
else if ( isMenu(parent) ) // Parent is menu
|
||||
|
|
|
@ -69,7 +69,7 @@ void FRadioMenuItem::init (FWidget* parent)
|
|||
addCallback // for this element
|
||||
(
|
||||
"toggled",
|
||||
F_METHOD_CALLBACK (menu_ptr, &FMenu::cb_menuitem_toggled)
|
||||
F_METHOD_CALLBACK (menu_ptr, &FMenu::cb_menuitemToggled)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -305,7 +305,7 @@ bool FScrollView::setBorder (bool enable)
|
|||
//----------------------------------------------------------------------
|
||||
void FScrollView::setHorizontalScrollBarMode (fc::scrollBarMode mode)
|
||||
{
|
||||
hMode = mode;
|
||||
h_mode = mode;
|
||||
|
||||
if ( isShown() )
|
||||
setHorizontalScrollBarVisibility();
|
||||
|
@ -314,7 +314,7 @@ void FScrollView::setHorizontalScrollBarMode (fc::scrollBarMode mode)
|
|||
//----------------------------------------------------------------------
|
||||
void FScrollView::setVerticalScrollBarMode (fc::scrollBarMode mode)
|
||||
{
|
||||
vMode = mode;
|
||||
v_mode = mode;
|
||||
|
||||
if ( isShown() )
|
||||
setVerticalScrollBarVisibility();
|
||||
|
@ -712,8 +712,8 @@ void FScrollView::init (FWidget* parent)
|
|||
assert ( parent != nullptr );
|
||||
assert ( ! parent->isInstanceOf("FScrollView") );
|
||||
|
||||
initScrollbar (vbar, fc::vertical, &FScrollView::cb_VBarChange);
|
||||
initScrollbar (hbar, fc::horizontal, &FScrollView::cb_HBarChange);
|
||||
initScrollbar (vbar, fc::vertical, &FScrollView::cb_vbarChange);
|
||||
initScrollbar (hbar, fc::horizontal, &FScrollView::cb_hbarChange);
|
||||
mapKeyFunctions();
|
||||
const auto& wc = getFWidgetColors();
|
||||
setForegroundColor (wc.dialog_fg);
|
||||
|
@ -790,7 +790,7 @@ void FScrollView::calculateScrollbarPos()
|
|||
//----------------------------------------------------------------------
|
||||
void FScrollView::setHorizontalScrollBarVisibility()
|
||||
{
|
||||
switch ( hMode )
|
||||
switch ( h_mode )
|
||||
{
|
||||
case fc::Auto:
|
||||
if ( getScrollWidth() > getViewportWidth() )
|
||||
|
@ -812,7 +812,7 @@ void FScrollView::setHorizontalScrollBarVisibility()
|
|||
//----------------------------------------------------------------------
|
||||
void FScrollView::setVerticalScrollBarVisibility()
|
||||
{
|
||||
switch ( vMode )
|
||||
switch ( v_mode )
|
||||
{
|
||||
case fc::Auto:
|
||||
if ( getScrollHeight() > getViewportHeight() )
|
||||
|
@ -852,7 +852,7 @@ void FScrollView::setViewportCursor()
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FScrollView::cb_VBarChange (FWidget*, FDataPtr)
|
||||
void FScrollView::cb_vbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
FScrollbar::sType scrollType = vbar->getScrollType();
|
||||
static constexpr int wheel_distance = 4;
|
||||
|
@ -903,7 +903,7 @@ void FScrollView::cb_VBarChange (FWidget*, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FScrollView::cb_HBarChange (FWidget*, FDataPtr)
|
||||
void FScrollView::cb_hbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
FScrollbar::sType scrollType = hbar->getScrollType();
|
||||
static constexpr int wheel_distance = 4;
|
||||
|
|
|
@ -940,11 +940,10 @@ inline char* FTermDetection::secDA_Analysis_82()
|
|||
char* new_termtype{};
|
||||
terminal_type.rxvt = true;
|
||||
|
||||
if ( std::strncmp(termtype, "rxvt-", 5) != 0
|
||||
&& std::strncmp(termtype, "rxvt-cygwin-native", 18) == 0 )
|
||||
if ( std::strncmp(termtype, "rxvt-cygwin-native", 18) == 0 )
|
||||
new_termtype = C_STR("rxvt-16color");
|
||||
else
|
||||
new_termtype = termtype;
|
||||
new_termtype = C_STR("rxvt");
|
||||
|
||||
return new_termtype;
|
||||
}
|
||||
|
|
|
@ -140,7 +140,7 @@ void FTextView::scrollTo (int x, int y)
|
|||
|
||||
if ( changeX && isHorizontallyScrollable() )
|
||||
{
|
||||
const int xoffset_end = int(maxLineWidth - getTextWidth());
|
||||
const int xoffset_end = int(max_line_width - getTextWidth());
|
||||
xoffset = x;
|
||||
|
||||
if ( xoffset < 0 )
|
||||
|
@ -215,17 +215,17 @@ void FTextView::insert (const FString& str, int pos)
|
|||
.rtrim();
|
||||
const auto column_width = getColumnWidth(line);
|
||||
|
||||
if ( column_width > maxLineWidth )
|
||||
if ( column_width > max_line_width )
|
||||
{
|
||||
maxLineWidth = column_width;
|
||||
max_line_width = column_width;
|
||||
|
||||
if ( column_width > getTextWidth() )
|
||||
{
|
||||
const int hmax = ( maxLineWidth > getTextWidth() )
|
||||
? int(maxLineWidth) - int(getTextWidth())
|
||||
const int hmax = ( max_line_width > getTextWidth() )
|
||||
? int(max_line_width) - int(getTextWidth())
|
||||
: 0;
|
||||
hbar->setMaximum (hmax);
|
||||
hbar->setPageSize (int(maxLineWidth), int(getTextWidth()));
|
||||
hbar->setPageSize (int(max_line_width), int(getTextWidth()));
|
||||
hbar->calculateSliderValues();
|
||||
|
||||
if ( isShown() && isHorizontallyScrollable() )
|
||||
|
@ -272,7 +272,7 @@ void FTextView::clear()
|
|||
data.shrink_to_fit();
|
||||
xoffset = 0;
|
||||
yoffset = 0;
|
||||
maxLineWidth = 0;
|
||||
max_line_width = 0;
|
||||
|
||||
vbar->setMinimum(0);
|
||||
vbar->setValue(0);
|
||||
|
@ -484,7 +484,7 @@ void FTextView::adjustSize()
|
|||
const std::size_t width = getWidth();
|
||||
const std::size_t height = getHeight();
|
||||
const int last_line = int(getRows());
|
||||
const int max_width = int(maxLineWidth);
|
||||
const int max_width = int(max_line_width);
|
||||
|
||||
if ( xoffset >= max_width - int(width) - nf_offset )
|
||||
xoffset = max_width - int(width) - nf_offset - 1;
|
||||
|
@ -555,8 +555,8 @@ std::size_t FTextView::getTextWidth()
|
|||
//----------------------------------------------------------------------
|
||||
void FTextView::init()
|
||||
{
|
||||
initScrollbar (vbar, fc::vertical, this, &FTextView::cb_VBarChange);
|
||||
initScrollbar (hbar, fc::horizontal, this, &FTextView::cb_HBarChange);
|
||||
initScrollbar (vbar, fc::vertical, this, &FTextView::cb_vbarChange);
|
||||
initScrollbar (hbar, fc::horizontal, this, &FTextView::cb_hbarChange);
|
||||
const auto& wc = getFWidgetColors();
|
||||
setForegroundColor (wc.dialog_fg);
|
||||
setBackgroundColor (wc.dialog_bg);
|
||||
|
@ -744,7 +744,7 @@ void FTextView::changeOnResize()
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FTextView::cb_VBarChange (FWidget*, FDataPtr)
|
||||
void FTextView::cb_vbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
const FScrollbar::sType scrollType = vbar->getScrollType();
|
||||
static constexpr int wheel_distance = 4;
|
||||
|
@ -795,7 +795,7 @@ void FTextView::cb_VBarChange (FWidget*, FDataPtr)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void FTextView::cb_HBarChange (FWidget*, FDataPtr)
|
||||
void FTextView::cb_hbarChange (FWidget*, FDataPtr)
|
||||
{
|
||||
const FScrollbar::sType scrollType = hbar->getScrollType();
|
||||
static constexpr int wheel_distance = 4;
|
||||
|
|
|
@ -1009,7 +1009,7 @@ void FWidget::show()
|
|||
show_root_widget = this;
|
||||
}
|
||||
|
||||
draw();
|
||||
draw(); // Draw the widget
|
||||
flags.hidden = false;
|
||||
flags.shown = true;
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ class FLabel : public FWidget
|
|||
void onAccel (FAccelEvent*) override;
|
||||
|
||||
// Callback method
|
||||
void cb_accel_widget_destroyed (FWidget*, FDataPtr);
|
||||
void cb_accelWidgetDestroyed (FWidget*, FDataPtr);
|
||||
|
||||
private:
|
||||
// Constants
|
||||
|
|
|
@ -309,8 +309,8 @@ class FListBox : public FWidget
|
|||
listBoxItems::iterator index2iterator (std::size_t);
|
||||
listBoxItems::const_iterator index2iterator (std::size_t index) const;
|
||||
// Callback methods
|
||||
void cb_VBarChange (FWidget*, FDataPtr);
|
||||
void cb_HBarChange (FWidget*, FDataPtr);
|
||||
void cb_vbarChange (FWidget*, FDataPtr);
|
||||
void cb_hbarChange (FWidget*, FDataPtr);
|
||||
|
||||
// Function Pointer
|
||||
lazyInsert lazy_inserter{};
|
||||
|
|
|
@ -441,8 +441,8 @@ class FListView : public FWidget
|
|||
bool hasCheckableItems() const;
|
||||
|
||||
// Callback methods
|
||||
void cb_VBarChange (FWidget*, FDataPtr);
|
||||
void cb_HBarChange (FWidget*, FDataPtr);
|
||||
void cb_vbarChange (FWidget*, FDataPtr);
|
||||
void cb_hbarChange (FWidget*, FDataPtr);
|
||||
|
||||
// Data members
|
||||
iterator root{};
|
||||
|
|
|
@ -121,7 +121,7 @@ class FMenu : public FWindow, public FMenuList
|
|||
void onAccel (FAccelEvent*) override;
|
||||
|
||||
// Callback method
|
||||
void cb_menuitem_toggled (FWidget*, FDataPtr);
|
||||
void cb_menuitemToggled (FWidget*, FDataPtr);
|
||||
|
||||
private:
|
||||
// Constants
|
||||
|
|
|
@ -98,7 +98,7 @@ class FMenuBar : public FWindow, public FMenuList
|
|||
void onAccel (FAccelEvent*) override;
|
||||
|
||||
// Callback methods
|
||||
void cb_item_deactivated (FWidget*, FDataPtr);
|
||||
void cb_itemDeactivated (FWidget*, FDataPtr);
|
||||
|
||||
private:
|
||||
// Constants
|
||||
|
|
|
@ -171,8 +171,8 @@ class FScrollView : public FWidget
|
|||
void setViewportCursor();
|
||||
|
||||
// Callback methods
|
||||
void cb_VBarChange (FWidget*, FDataPtr);
|
||||
void cb_HBarChange (FWidget*, FDataPtr);
|
||||
void cb_vbarChange (FWidget*, FDataPtr);
|
||||
void cb_hbarChange (FWidget*, FDataPtr);
|
||||
|
||||
// Data members
|
||||
FRect scroll_geometry{1, 1, 1, 1};
|
||||
|
@ -185,8 +185,8 @@ class FScrollView : public FWidget
|
|||
bool border{true};
|
||||
bool use_own_print_area{false};
|
||||
bool update_scrollbar{true};
|
||||
fc::scrollBarMode vMode{fc::Auto}; // fc:Auto, fc::Hidden or fc::Scroll
|
||||
fc::scrollBarMode hMode{fc::Auto};
|
||||
fc::scrollBarMode v_mode{fc::Auto}; // fc:Auto, fc::Hidden or fc::Scroll
|
||||
fc::scrollBarMode h_mode{fc::Auto};
|
||||
};
|
||||
|
||||
// FScrollView inline functions
|
||||
|
|
|
@ -157,8 +157,8 @@ class FTextView : public FWidget
|
|||
void changeOnResize();
|
||||
|
||||
// Callback methods
|
||||
void cb_VBarChange (FWidget*, FDataPtr);
|
||||
void cb_HBarChange (FWidget*, FDataPtr);
|
||||
void cb_vbarChange (FWidget*, FDataPtr);
|
||||
void cb_hbarChange (FWidget*, FDataPtr);
|
||||
|
||||
// Data members
|
||||
FStringList data{};
|
||||
|
@ -169,7 +169,7 @@ class FTextView : public FWidget
|
|||
int xoffset{0};
|
||||
int yoffset{0};
|
||||
int nf_offset{0};
|
||||
std::size_t maxLineWidth{0};
|
||||
std::size_t max_line_width{0};
|
||||
};
|
||||
|
||||
// FListBox inline functions
|
||||
|
@ -213,7 +213,7 @@ inline const FString FTextView::getClassName() const
|
|||
|
||||
//----------------------------------------------------------------------
|
||||
inline std::size_t FTextView::getColumns() const
|
||||
{ return maxLineWidth; }
|
||||
{ return max_line_width; }
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
inline std::size_t FTextView::getRows() const
|
||||
|
@ -256,7 +256,7 @@ inline void FTextView::deleteLine (int pos)
|
|||
|
||||
//----------------------------------------------------------------------
|
||||
inline bool FTextView::isHorizontallyScrollable()
|
||||
{ return bool( maxLineWidth > getTextWidth() ); }
|
||||
{ return bool( max_line_width > getTextWidth() ); }
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
inline bool FTextView::isVerticallyScrollable()
|
||||
|
|
Loading…
Reference in New Issue