FRect has now got a scaleBy() method
This commit is contained in:
parent
bd81fdb069
commit
5a43a018cf
|
@ -1,3 +1,7 @@
|
||||||
|
2019-08-11 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* FRect has now got a scaleBy() method
|
||||||
|
* Convert drawBorder() to a non-member function using FRect
|
||||||
|
|
||||||
2019-08-10 Markus Gans <guru.mail@muenster.de>
|
2019-08-10 Markus Gans <guru.mail@muenster.de>
|
||||||
* Pitch and duration of system speaker can now be changed
|
* Pitch and duration of system speaker can now be changed
|
||||||
on OpenBSD
|
on OpenBSD
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
namespace fc = finalcut::fc;
|
namespace fc = finalcut::fc;
|
||||||
using finalcut::FColorPair;
|
using finalcut::FColorPair;
|
||||||
|
using finalcut::FRect;
|
||||||
using finalcut::FPoint;
|
using finalcut::FPoint;
|
||||||
using finalcut::FSize;
|
using finalcut::FSize;
|
||||||
|
|
||||||
|
@ -199,7 +200,7 @@ void SegmentView::draw()
|
||||||
|
|
||||||
FDialog::draw();
|
FDialog::draw();
|
||||||
setColor(fc::LightGray, fc::Black);
|
setColor(fc::LightGray, fc::Black);
|
||||||
FWidget::drawBorder(3, 6, 40, 11);
|
finalcut::drawBorder(this, FRect(FPoint(3, 6), FPoint(40, 11)));
|
||||||
|
|
||||||
for (auto&& ch : Input.getText().toUpper())
|
for (auto&& ch : Input.getText().toUpper())
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,9 +23,10 @@
|
||||||
#include <final/final.h>
|
#include <final/final.h>
|
||||||
|
|
||||||
namespace fc = finalcut::fc;
|
namespace fc = finalcut::fc;
|
||||||
|
using finalcut::FColorPair;
|
||||||
|
using finalcut::FRect;
|
||||||
using finalcut::FPoint;
|
using finalcut::FPoint;
|
||||||
using finalcut::FSize;
|
using finalcut::FSize;
|
||||||
using finalcut::FColorPair;
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -129,7 +130,7 @@ void ColorChooser::onMouseDown (finalcut::FMouseEvent* ev)
|
||||||
void ColorChooser::draw()
|
void ColorChooser::draw()
|
||||||
{
|
{
|
||||||
setColor();
|
setColor();
|
||||||
finalcut::FWidget::drawBorder (1, 2, 8, 11);
|
finalcut::drawBorder (this, FRect(FPoint(1, 2), FSize(8, 10)));
|
||||||
|
|
||||||
for (FColor c = 0; c < 16; c++)
|
for (FColor c = 0; c < 16; c++)
|
||||||
{
|
{
|
||||||
|
@ -243,7 +244,7 @@ void Brushes::draw()
|
||||||
{
|
{
|
||||||
int pos;
|
int pos;
|
||||||
setColor();
|
setColor();
|
||||||
finalcut::FWidget::drawBorder (1, 2, 8, 4);
|
finalcut::drawBorder (this, FRect(FPoint(1, 2), FSize(8, 3)));
|
||||||
print() << FPoint(2, 3)
|
print() << FPoint(2, 3)
|
||||||
<< FColorPair(fg_color, bg_color) << " "
|
<< FColorPair(fg_color, bg_color) << " "
|
||||||
<< finalcut::FString(3, fc::MediumShade);
|
<< finalcut::FString(3, fc::MediumShade);
|
||||||
|
|
|
@ -913,39 +913,38 @@ void FDialog::initCloseMenuItem (FMenu* menu)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FDialog::drawBorder()
|
void FDialog::drawBorder()
|
||||||
{
|
{
|
||||||
int x1 = 1
|
|
||||||
, x2 = 1 + int(getWidth()) - 1
|
|
||||||
, y1 = 2
|
|
||||||
, y2 = 1 + int(getHeight()) - 1;
|
|
||||||
|
|
||||||
if ( (getMoveSizeWidget() == this || ! resize_click_pos.isOrigin() )
|
if ( (getMoveSizeWidget() == this || ! resize_click_pos.isOrigin() )
|
||||||
&& ! isZoomed() )
|
&& ! isZoomed() )
|
||||||
setColor (wc.dialog_resize_fg, getBackgroundColor());
|
setColor (wc.dialog_resize_fg, getBackgroundColor());
|
||||||
else
|
else
|
||||||
setColor();
|
setColor();
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() ) // Draw a newfont U-shaped frame
|
||||||
{
|
{
|
||||||
for (int y = y1; y < y2; y++)
|
FRect r(FPoint(1, 1), getSize());
|
||||||
|
|
||||||
|
for (int y = r.getY1() + 1; y < r.getY2(); y++)
|
||||||
{
|
{
|
||||||
print() << FPoint(x1, y) // Border left ⎸
|
print() << FPoint(r.getX1(), y)
|
||||||
<< fc::NF_border_line_left;
|
<< fc::NF_border_line_left // border left ⎸
|
||||||
print() << FPoint(x2, y) // Border right⎹
|
<< FPoint(r.getX2(), y)
|
||||||
<< fc::NF_rev_border_line_right;
|
<< fc::NF_rev_border_line_right; // border right⎹
|
||||||
}
|
}
|
||||||
|
|
||||||
print() << FPoint(x1, y2) // Lower left corner border ⎣
|
print() << r.getLowerLeftPos() // lower left corner border ⎣
|
||||||
<< fc::NF_border_corner_lower_left;
|
<< fc::NF_border_corner_lower_left;
|
||||||
|
|
||||||
for (std::size_t x = 1; x < getWidth() - 1; x++) // low line _
|
for (int x = r.getX1() + 1; x < r.getX2(); x++)
|
||||||
print (fc::NF_border_line_bottom);
|
print (fc::NF_border_line_bottom); // low line _
|
||||||
|
|
||||||
print() << FPoint(x2, y2) // Lower right corner border ⎦
|
// lower right corner border ⎦
|
||||||
<< fc::NF_rev_border_corner_lower_right;
|
print (fc::NF_rev_border_corner_lower_right);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FWidget::drawBorder(x1, y1, x2, y2);
|
FRect box(FPoint(1, 2), getSize());
|
||||||
|
box.scaleBy(0, -1);
|
||||||
|
finalcut::drawBorder(this, box);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -816,7 +816,11 @@ void FListBox::draw()
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
drawBorder (1, 1, int(getWidth()) - 1, int(getHeight()));
|
{
|
||||||
|
FRect box(FPoint(1, 1), getSize());
|
||||||
|
box.scaleBy(-1, 0);
|
||||||
|
finalcut::drawBorder (this, box);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
drawBorder();
|
drawBorder();
|
||||||
|
|
||||||
|
@ -836,16 +840,7 @@ void FListBox::draw()
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(false);
|
setReverse(false);
|
||||||
|
|
||||||
if ( ! hbar->isShown() && isHorizontallyScrollable() )
|
drawScrollbars();
|
||||||
hbar->show();
|
|
||||||
else
|
|
||||||
vbar->redraw();
|
|
||||||
|
|
||||||
if ( ! vbar->isShown() && isVerticallyScrollable() )
|
|
||||||
vbar->show();
|
|
||||||
else
|
|
||||||
hbar->redraw();
|
|
||||||
|
|
||||||
drawList();
|
drawList();
|
||||||
|
|
||||||
if ( flags.focus && getStatusBar() )
|
if ( flags.focus && getStatusBar() )
|
||||||
|
@ -861,6 +856,21 @@ void FListBox::draw()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FListBox::drawScrollbars()
|
||||||
|
{
|
||||||
|
if ( ! hbar->isShown() && isHorizontallyScrollable() )
|
||||||
|
hbar->show();
|
||||||
|
else
|
||||||
|
vbar->redraw();
|
||||||
|
|
||||||
|
if ( ! vbar->isShown() && isVerticallyScrollable() )
|
||||||
|
vbar->show();
|
||||||
|
else
|
||||||
|
hbar->redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FListBox::drawHeadline()
|
void FListBox::drawHeadline()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1476,7 +1476,11 @@ void FListView::draw()
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
drawBorder (1, 1, int(getWidth()) - 1, int(getHeight()));
|
{
|
||||||
|
FRect box(FPoint(1, 1), getSize());
|
||||||
|
box.scaleBy(-1, 0);
|
||||||
|
finalcut::drawBorder (this, box);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
drawBorder();
|
drawBorder();
|
||||||
|
|
||||||
|
@ -1496,16 +1500,7 @@ void FListView::draw()
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(false);
|
setReverse(false);
|
||||||
|
|
||||||
if ( ! hbar->isShown() && isHorizontallyScrollable() )
|
drawScrollbars();
|
||||||
hbar->show();
|
|
||||||
else
|
|
||||||
vbar->redraw();
|
|
||||||
|
|
||||||
if ( ! vbar->isShown() && isVerticallyScrollable() )
|
|
||||||
vbar->show();
|
|
||||||
else
|
|
||||||
hbar->redraw();
|
|
||||||
|
|
||||||
drawList();
|
drawList();
|
||||||
|
|
||||||
if ( flags.focus && getStatusBar() )
|
if ( flags.focus && getStatusBar() )
|
||||||
|
@ -1521,6 +1516,20 @@ void FListView::draw()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FListView::drawScrollbars()
|
||||||
|
{
|
||||||
|
if ( ! hbar->isShown() && isHorizontallyScrollable() )
|
||||||
|
hbar->show();
|
||||||
|
else
|
||||||
|
vbar->redraw();
|
||||||
|
|
||||||
|
if ( ! vbar->isShown() && isVerticallyScrollable() )
|
||||||
|
vbar->show();
|
||||||
|
else
|
||||||
|
hbar->redraw();
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FListView::drawHeadlines()
|
void FListView::drawHeadlines()
|
||||||
{
|
{
|
||||||
|
|
|
@ -171,10 +171,10 @@ void FRect::setHeight (std::size_t h)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FRect::setSize (std::size_t w, std::size_t h)
|
void FRect::setSize (std::size_t width, std::size_t height)
|
||||||
{
|
{
|
||||||
X2 = X1 + int(w) - 1;
|
X2 = X1 + int(width) - 1;
|
||||||
Y2 = Y1 + int(h) - 1;
|
Y2 = Y1 + int(height) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -244,6 +244,20 @@ void FRect::move (const FPoint& d)
|
||||||
Y2 = Y2 + d.getY();
|
Y2 = Y2 + d.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FRect::scaleBy (int dx, int dy)
|
||||||
|
{
|
||||||
|
X2 += dx;
|
||||||
|
Y2 += dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FRect::scaleBy (const FPoint& d)
|
||||||
|
{
|
||||||
|
X2 += d.getX();
|
||||||
|
Y2 += d.getY();
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
bool FRect::contains (int x, int y) const
|
bool FRect::contains (int x, int y) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -432,7 +432,11 @@ void FScrollView::draw()
|
||||||
if ( border )
|
if ( border )
|
||||||
{
|
{
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
drawBorder (1, 1, int(getWidth()) - 1, int(getHeight()));
|
{
|
||||||
|
FRect box(FPoint(1, 1), getSize());
|
||||||
|
box.scaleBy(-1, 0);
|
||||||
|
finalcut::drawBorder (this, box);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
drawBorder();
|
drawBorder();
|
||||||
}
|
}
|
||||||
|
|
177
src/fwidget.cpp
177
src/fwidget.cpp
|
@ -1419,33 +1419,6 @@ void FWidget::clearFlatBorder()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
void FWidget::drawBorder (int x1, int y1, int x2, int y2)
|
|
||||||
{
|
|
||||||
if ( x1 > x2 )
|
|
||||||
std::swap (x1, x2);
|
|
||||||
|
|
||||||
if ( y1 > y2 )
|
|
||||||
std::swap (y1, y2);
|
|
||||||
|
|
||||||
if ( x1 < 1 )
|
|
||||||
x1 = 1;
|
|
||||||
|
|
||||||
if ( y1 < 1 )
|
|
||||||
y1 = 1;
|
|
||||||
|
|
||||||
if ( x2 > int(getWidth()) )
|
|
||||||
x2 = int(getWidth());
|
|
||||||
|
|
||||||
if ( y2 > int(getHeight()) )
|
|
||||||
y2 = int(getHeight());
|
|
||||||
|
|
||||||
if ( isNewFont() )
|
|
||||||
drawNewFontBox (x1, y1, x2, y2);
|
|
||||||
else
|
|
||||||
drawBox (x1, y1, x2, y2);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FWidget::quit()
|
void FWidget::quit()
|
||||||
{
|
{
|
||||||
|
@ -2302,72 +2275,6 @@ void FWidget::drawBlockShadow (int x1, int y1, int x2, int y2)
|
||||||
unsetInheritBackground();
|
unsetInheritBackground();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FWidget::drawBox (int x1, int y1, int x2, int y2)
|
|
||||||
{
|
|
||||||
// Use box-drawing characters to draw a border
|
|
||||||
|
|
||||||
print() << FPoint(x1, y1) << fc::BoxDrawingsDownAndRight; // ┌
|
|
||||||
|
|
||||||
for (int x = x1 + 1; x < x2; x++)
|
|
||||||
print (fc::BoxDrawingsHorizontal); // ─
|
|
||||||
|
|
||||||
print (fc::BoxDrawingsDownAndLeft); // ┐
|
|
||||||
|
|
||||||
for (int y = y1 + 1; y < y2; y++)
|
|
||||||
{
|
|
||||||
print() << FPoint(x1, y)
|
|
||||||
<< fc::BoxDrawingsVertical // │
|
|
||||||
<< FPoint(x2, y)
|
|
||||||
<< fc::BoxDrawingsVertical; // │
|
|
||||||
}
|
|
||||||
|
|
||||||
print() << FPoint(x1, y2) << fc::BoxDrawingsUpAndRight; // └
|
|
||||||
|
|
||||||
for (int x = x1 + 1; x < x2; x++)
|
|
||||||
print (fc::BoxDrawingsHorizontal); // ─
|
|
||||||
|
|
||||||
print (fc::BoxDrawingsUpAndLeft); // ┘
|
|
||||||
|
|
||||||
for (int x = x1 + 1; x < x2; x++)
|
|
||||||
{
|
|
||||||
print() << FPoint(x, y1)
|
|
||||||
<< fc::BoxDrawingsHorizontal // ─
|
|
||||||
<< FPoint(x, y2)
|
|
||||||
<< fc::BoxDrawingsHorizontal; // ─
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FWidget::drawNewFontBox (int x1, int y1, int x2, int y2)
|
|
||||||
{
|
|
||||||
// Use new graphical font characters to draw a border
|
|
||||||
|
|
||||||
print() << FPoint(x1, y1)
|
|
||||||
<< fc::NF_border_corner_middle_upper_left; // ┌
|
|
||||||
|
|
||||||
for (int x = x1 + 1; x < x2; x++)
|
|
||||||
print (fc::BoxDrawingsHorizontal); // ─
|
|
||||||
|
|
||||||
print (fc::NF_border_corner_middle_upper_right); // ┐
|
|
||||||
|
|
||||||
for (int y = y1 + 1; y <= y2; y++)
|
|
||||||
{
|
|
||||||
print() << FPoint(x1, y)
|
|
||||||
<< fc::NF_border_line_left // border left ⎸
|
|
||||||
<< FPoint(x2, y)
|
|
||||||
<< fc::NF_rev_border_line_right; // border right⎹
|
|
||||||
}
|
|
||||||
|
|
||||||
print() << FPoint(x1, y2)
|
|
||||||
<< fc::NF_border_corner_middle_lower_left; // └
|
|
||||||
|
|
||||||
for (int x = x1 + 1; x < x2; x++)
|
|
||||||
print (fc::BoxDrawingsHorizontal); // ─
|
|
||||||
|
|
||||||
print (fc::NF_border_corner_middle_lower_right); // ┘
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FWidget::setColorTheme()
|
void FWidget::setColorTheme()
|
||||||
{
|
{
|
||||||
|
@ -2433,4 +2340,88 @@ FKey getHotkey (const FString& text)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void drawBox (FWidget* w, const FRect& r)
|
||||||
|
{
|
||||||
|
// Use box-drawing characters to draw a border
|
||||||
|
|
||||||
|
w->print() << r.getUpperLeftPos() << fc::BoxDrawingsDownAndRight; // ┌
|
||||||
|
|
||||||
|
for (int x = r.getX1() + 1; x < r.getX2(); x++)
|
||||||
|
w->print (fc::BoxDrawingsHorizontal); // ─
|
||||||
|
|
||||||
|
w->print (fc::BoxDrawingsDownAndLeft); // ┐
|
||||||
|
|
||||||
|
for (int y = r.getY1() + 1; y < r.getY2(); y++)
|
||||||
|
{
|
||||||
|
w->print() << FPoint(r.getX1(), y)
|
||||||
|
<< fc::BoxDrawingsVertical // │
|
||||||
|
<< FPoint(r.getX2(), y)
|
||||||
|
<< fc::BoxDrawingsVertical; // │
|
||||||
|
}
|
||||||
|
|
||||||
|
w->print() << r.getLowerLeftPos() << fc::BoxDrawingsUpAndRight; // └
|
||||||
|
|
||||||
|
for (int x = r.getX1() + 1; x < r.getX2(); x++)
|
||||||
|
w->print (fc::BoxDrawingsHorizontal); // ─
|
||||||
|
|
||||||
|
w->print (fc::BoxDrawingsUpAndLeft); // ┘
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void drawNewFontBox (FWidget* w, const FRect& r)
|
||||||
|
{
|
||||||
|
// Use new graphical font characters to draw a border
|
||||||
|
|
||||||
|
w->print() << r.getUpperLeftPos()
|
||||||
|
<< fc::NF_border_corner_middle_upper_left; // ┌
|
||||||
|
for (int x = r.getX1() + 1; x < r.getX2(); x++)
|
||||||
|
w->print (fc::BoxDrawingsHorizontal); // ─
|
||||||
|
|
||||||
|
w->print (fc::NF_border_corner_middle_upper_right); // ┐
|
||||||
|
|
||||||
|
for (int y = r.getY1() + 1; y < r.getY2(); y++)
|
||||||
|
{
|
||||||
|
w->print() << FPoint(r.getX1(), y)
|
||||||
|
<< fc::NF_border_line_left // border left ⎸
|
||||||
|
<< FPoint(r.getX2(), y)
|
||||||
|
<< fc::NF_rev_border_line_right; // border right⎹
|
||||||
|
}
|
||||||
|
|
||||||
|
w->print() << r.getLowerLeftPos()
|
||||||
|
<< fc::NF_border_corner_middle_lower_left; // └
|
||||||
|
|
||||||
|
for (int x = r.getX1() + 1; x < r.getX2(); x++)
|
||||||
|
w->print (fc::BoxDrawingsHorizontal); // ─
|
||||||
|
|
||||||
|
w->print (fc::NF_border_corner_middle_lower_right); // ┘
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void drawBorder (FWidget* w, FRect r)
|
||||||
|
{
|
||||||
|
if ( r.x1_ref() > r.x2_ref() )
|
||||||
|
std::swap (r.x1_ref(), r.x2_ref());
|
||||||
|
|
||||||
|
if ( r.y1_ref() > r.y2_ref() )
|
||||||
|
std::swap (r.y1_ref(), r.y2_ref());
|
||||||
|
|
||||||
|
if ( r.x1_ref() < 1 )
|
||||||
|
r.x1_ref() = 1;
|
||||||
|
|
||||||
|
if ( r.y1_ref() < 1 )
|
||||||
|
r.y1_ref() = 1;
|
||||||
|
|
||||||
|
if ( r.x2_ref() > int(w->getWidth()) )
|
||||||
|
r.x2_ref() = int(w->getWidth());
|
||||||
|
|
||||||
|
if ( r.y2_ref() > int(w->getHeight()) )
|
||||||
|
r.y2_ref() = int(w->getHeight());
|
||||||
|
|
||||||
|
if ( w->isNewFont() )
|
||||||
|
drawNewFontBox (w, r);
|
||||||
|
else
|
||||||
|
drawBox (w, r);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace finalcut
|
} // namespace finalcut
|
||||||
|
|
|
@ -247,36 +247,32 @@ bool FWindow::isWindowHidden() const
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FWindow::drawBorder()
|
void FWindow::drawBorder()
|
||||||
{
|
{
|
||||||
if ( isNewFont() )
|
if ( isNewFont() ) // Draw a newfont outer frame
|
||||||
{
|
{
|
||||||
int x1 = 1
|
FRect r(FPoint(1, 1), getSize());
|
||||||
, x2 = 1 + int(getWidth()) - 1
|
print() << r.getUpperLeftPos()
|
||||||
, y1 = 1
|
<< fc::NF_border_corner_upper_left; // ⎡
|
||||||
, y2 = 1 + int(getHeight()) - 1;
|
for (int x = r.getX1() + 1; x < r.getX2(); x++)
|
||||||
|
|
||||||
print() << FPoint(x1, y1) << fc::NF_border_corner_upper_left; // ⎡
|
|
||||||
|
|
||||||
for (int x = x1 + 1; x < x2; x++)
|
|
||||||
print (fc::NF_border_line_upper); // ¯
|
print (fc::NF_border_line_upper); // ¯
|
||||||
|
|
||||||
print (fc::NF_rev_border_corner_upper_right); // ⎤
|
print (fc::NF_rev_border_corner_upper_right); // ⎤
|
||||||
|
|
||||||
for (int y = y1 + 1; y < y2; y++)
|
for (int y = r.getY1() + 1; y < r.getY2(); y++)
|
||||||
{
|
{
|
||||||
print() << FPoint(x1, y) // border left ⎸
|
print() << FPoint(r.getX1(), y)
|
||||||
<< fc::NF_border_line_left
|
<< fc::NF_border_line_left // border left ⎸
|
||||||
<< FPoint(x2, y) // border right⎹
|
<< FPoint(r.getX2(), y)
|
||||||
<< fc::NF_rev_border_line_right;
|
<< fc::NF_rev_border_line_right; // border right⎹
|
||||||
}
|
}
|
||||||
|
|
||||||
print() << FPoint(x1, y2) // lower left corner border ⎣
|
print() << r.getLowerLeftPos() // lower left corner border ⎣
|
||||||
<< fc::NF_border_corner_lower_left;
|
<< fc::NF_border_corner_lower_left;
|
||||||
|
|
||||||
for (std::size_t x = 2; x < getWidth(); x++) // low line _
|
for (int x = r.getX1() + 1; x < r.getX2(); x++)
|
||||||
print (fc::NF_border_line_bottom);
|
print (fc::NF_border_line_bottom); // low line _
|
||||||
|
|
||||||
print() << FPoint(x2, y2) // lower right corner border ⎦
|
// lower right corner border ⎦
|
||||||
<< fc::NF_rev_border_corner_lower_right;
|
print (fc::NF_rev_border_corner_lower_right);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -268,6 +268,7 @@ class FListBox : public FWidget
|
||||||
, fc::orientation
|
, fc::orientation
|
||||||
, FListBoxCallback );
|
, FListBoxCallback );
|
||||||
void draw() override;
|
void draw() override;
|
||||||
|
void drawScrollbars();
|
||||||
void drawHeadline();
|
void drawHeadline();
|
||||||
void drawList();
|
void drawList();
|
||||||
void drawListLine (int, listBoxItems::iterator, bool);
|
void drawListLine (int, listBoxItems::iterator, bool);
|
||||||
|
|
|
@ -394,6 +394,7 @@ class FListView : public FWidget
|
||||||
, std::size_t
|
, std::size_t
|
||||||
, std::size_t );
|
, std::size_t );
|
||||||
void draw() override;
|
void draw() override;
|
||||||
|
void drawScrollbars();
|
||||||
void drawHeadlines();
|
void drawHeadlines();
|
||||||
void drawList();
|
void drawList();
|
||||||
void drawListLine (const FListViewItem*, bool, bool);
|
void drawListLine (const FListViewItem*, bool, bool);
|
||||||
|
|
|
@ -128,6 +128,8 @@ class FRect
|
||||||
// Methods
|
// Methods
|
||||||
void move (int, int);
|
void move (int, int);
|
||||||
void move (const FPoint&);
|
void move (const FPoint&);
|
||||||
|
void scaleBy (int, int);
|
||||||
|
void scaleBy (const FPoint&);
|
||||||
bool contains (int, int) const;
|
bool contains (int, int) const;
|
||||||
bool contains (const FPoint&) const;
|
bool contains (const FPoint&) const;
|
||||||
bool contains (const FRect&) const;
|
bool contains (const FRect&) const;
|
||||||
|
|
|
@ -339,7 +339,6 @@ class FWidget : public FVTerm, public FObject
|
||||||
void clearShadow();
|
void clearShadow();
|
||||||
void drawFlatBorder();
|
void drawFlatBorder();
|
||||||
void clearFlatBorder();
|
void clearFlatBorder();
|
||||||
virtual void drawBorder (int, int, int, int);
|
|
||||||
virtual void drawBorder();
|
virtual void drawBorder();
|
||||||
static void quit();
|
static void quit();
|
||||||
|
|
||||||
|
@ -431,8 +430,6 @@ class FWidget : public FVTerm, public FObject
|
||||||
void drawChildren();
|
void drawChildren();
|
||||||
void drawTransparentShadow (int, int, int, int);
|
void drawTransparentShadow (int, int, int, int);
|
||||||
void drawBlockShadow (int, int, int, int);
|
void drawBlockShadow (int, int, int, int);
|
||||||
void drawBox (int, int, int, int);
|
|
||||||
void drawNewFontBox (int, int, int, int);
|
|
||||||
static void setColorTheme();
|
static void setColorTheme();
|
||||||
|
|
||||||
// Data Members
|
// Data Members
|
||||||
|
@ -523,6 +520,13 @@ class FWidget : public FVTerm, public FObject
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
// non-member function forward declarations
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
char* createBlankArray (std::size_t);
|
||||||
|
void destroyBlankArray (char[]);
|
||||||
|
FKey getHotkey (const FString&);
|
||||||
|
void drawBorder (FWidget*, FRect);
|
||||||
|
|
||||||
// FWidget inline functions
|
// FWidget inline functions
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline const char* FWidget::getClassName() const
|
inline const char* FWidget::getClassName() const
|
||||||
|
@ -937,7 +941,9 @@ inline void FWidget::print (const FPoint& pos)
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FWidget::drawBorder()
|
inline void FWidget::drawBorder()
|
||||||
{ drawBorder (1, 1, int(getWidth()), int(getHeight())); }
|
{
|
||||||
|
finalcut::drawBorder (this, FRect(FPoint(1, 1), getSize()));
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FWidget::processDestroy()
|
inline void FWidget::processDestroy()
|
||||||
|
@ -1005,12 +1011,6 @@ const wchar_t CHECKED_RADIO_BUTTON[4] =
|
||||||
'\0'
|
'\0'
|
||||||
};
|
};
|
||||||
|
|
||||||
// non-member function forward declarations
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
char* createBlankArray (std::size_t);
|
|
||||||
void destroyBlankArray (char[]);
|
|
||||||
FKey getHotkey (const FString&);
|
|
||||||
|
|
||||||
} // namespace finalcut
|
} // namespace finalcut
|
||||||
|
|
||||||
#endif // FWIDGET_H
|
#endif // FWIDGET_H
|
||||||
|
|
|
@ -56,6 +56,7 @@ class FRectTest : public CPPUNIT_NS::TestFixture
|
||||||
void subtractionTest();
|
void subtractionTest();
|
||||||
void referenceTest();
|
void referenceTest();
|
||||||
void moveTest();
|
void moveTest();
|
||||||
|
void scaleTest();
|
||||||
void containsTest();
|
void containsTest();
|
||||||
void overlapTest();
|
void overlapTest();
|
||||||
void intersectTest();
|
void intersectTest();
|
||||||
|
@ -79,6 +80,7 @@ class FRectTest : public CPPUNIT_NS::TestFixture
|
||||||
CPPUNIT_TEST (subtractionTest);
|
CPPUNIT_TEST (subtractionTest);
|
||||||
CPPUNIT_TEST (referenceTest);
|
CPPUNIT_TEST (referenceTest);
|
||||||
CPPUNIT_TEST (moveTest);
|
CPPUNIT_TEST (moveTest);
|
||||||
|
CPPUNIT_TEST (scaleTest);
|
||||||
CPPUNIT_TEST (containsTest);
|
CPPUNIT_TEST (containsTest);
|
||||||
CPPUNIT_TEST (overlapTest);
|
CPPUNIT_TEST (overlapTest);
|
||||||
CPPUNIT_TEST (intersectTest);
|
CPPUNIT_TEST (intersectTest);
|
||||||
|
@ -498,6 +500,38 @@ void FRectTest::moveTest()
|
||||||
CPPUNIT_ASSERT ( r1.getY2() == 19 );
|
CPPUNIT_ASSERT ( r1.getY2() == 19 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FRectTest::scaleTest()
|
||||||
|
{
|
||||||
|
finalcut::FRect r1 (finalcut::FPoint(5, 5), finalcut::FSize(15, 15));
|
||||||
|
CPPUNIT_ASSERT ( r1.getX() == 5 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getY() == 5 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getWidth() == 15 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getHeight() == 15 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getSize() == finalcut::FSize(15, 15) );
|
||||||
|
CPPUNIT_ASSERT ( r1.getX2() == 19 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getY2() == 19 );
|
||||||
|
|
||||||
|
const finalcut::FPoint p1 (-2, -3);
|
||||||
|
r1.scaleBy(p1);
|
||||||
|
CPPUNIT_ASSERT ( r1.getX() == 5 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getY() == 5 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getWidth() == 13 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getHeight() == 12 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getSize() == finalcut::FSize(13, 12) );
|
||||||
|
CPPUNIT_ASSERT ( r1.getX2() == 17 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getY2() == 16 );
|
||||||
|
|
||||||
|
r1.scaleBy(1, -1);
|
||||||
|
CPPUNIT_ASSERT ( r1.getX() == 5 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getY() == 5 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getWidth() == 14 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getHeight() == 11 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getSize() == finalcut::FSize(14, 11) );
|
||||||
|
CPPUNIT_ASSERT ( r1.getX2() == 18 );
|
||||||
|
CPPUNIT_ASSERT ( r1.getY2() == 15 );
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FRectTest::containsTest()
|
void FRectTest::containsTest()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue