Skip to content

Commit

Permalink
Add testing of fillRect() to QPainter lancelot test
Browse files Browse the repository at this point in the history
Change-Id: I3be230d3fafa178a37cf7387f79f372c8d8aeb05
Reviewed-by: Allan Sandfeld Jensen <[email protected]>
  • Loading branch information
aavit committed Oct 16, 2019
1 parent 78d349e commit ea377c5
Show file tree
Hide file tree
Showing 4 changed files with 295 additions and 0 deletions.
49 changes: 49 additions & 0 deletions tests/auto/other/lancelot/paintcommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ void PaintCommands::staticInit()
"^gradient_setCoordinateMode\\s+(\\w*)$",
"gradient_setCoordinateMode <coordinate method enum>",
"gradient_setCoordinateMode ObjectBoundingMode");

DECL_PAINTCOMMANDSECTION("drawing ops");
DECL_PAINTCOMMAND("drawPoint", command_drawPoint,
"^drawPoint\\s+(-?[\\w.]*)\\s+(-?[\\w.]*)$",
Expand Down Expand Up @@ -454,6 +455,14 @@ void PaintCommands::staticInit()
"\n - where t means tile"
"\n - and s is an offset in the tile",
"drawTiledPixmap :/images/alpha.png ");
DECL_PAINTCOMMAND("fillRect", command_fillRect,
"^fillRect\\s+(-?\\w*)\\s+(-?\\w*)\\s+(-?\\w*)\\s+(-?\\w*)\\s*(\\w*)?$",
"fillRect <x> <y> <w> <h> [color]\n - Uses current brush if no color given",
"fillRect 10 10 20 20 blue");
DECL_PAINTCOMMAND("fillRectF", command_fillRectF,
"^fillRectF\\s+(-?[.\\w]*)\\s+(-?[.\\w]*)\\s+(-?[.\\w]*)\\s+(-?[.\\w]*)\\s*(\\w*)?$",
"fillRectF <x> <y> <w> <h> [color]\n - Uses current brush if no color given",
"fillRectF 10.5 10.5 20.2 20.2 blue");

DECL_PAINTCOMMANDSECTION("painterPaths");
DECL_PAINTCOMMAND("path_moveTo", command_path_moveTo,
Expand Down Expand Up @@ -1331,6 +1340,46 @@ void PaintCommands::command_drawTextDocument(QRegularExpressionMatch re)
m_painter->restore();
}

/***************************************************************************************************/
void PaintCommands::command_fillRect(QRegularExpressionMatch re)
{
QStringList caps = re.capturedTexts();
int x = convertToInt(caps.at(1));
int y = convertToInt(caps.at(2));
int w = convertToInt(caps.at(3));
int h = convertToInt(caps.at(4));

if (!caps.at(5).isEmpty()) {
QColor color = convertToColor(caps.at(5));
if (m_verboseMode)
printf(" -(lance) fillRect(%d, %d, %d, %d, %s)\n", x, y, w, h, qPrintable(color.name()));
m_painter->fillRect(x, y, w, h, color);
} else {
if (m_verboseMode)
printf(" -(lance) fillRect(%d, %d, %d, %d)\n", x, y, w, h);
m_painter->fillRect(x, y, w, h, m_painter->brush());
}
}

void PaintCommands::command_fillRectF(QRegularExpressionMatch re)
{
QStringList caps = re.capturedTexts();
double x = convertToDouble(caps.at(1));
double y = convertToDouble(caps.at(2));
double w = convertToDouble(caps.at(3));
double h = convertToDouble(caps.at(4));

if (!caps.at(5).isEmpty()) {
QColor color = convertToColor(caps.at(5));
if (m_verboseMode)
printf(" -(lance) fillRectF(%.2f, %.2f, %.2f, %.2f, %s)\n", x, y, w, h, qPrintable(color.name()));
m_painter->fillRect(QRectF(x, y, w, h), color);
} else {
if (m_verboseMode)
printf(" -(lance) fillRectF(%.2f, %.2f, %.2f, %.2f)\n", x, y, w, h);
m_painter->fillRect(QRectF(x, y, w, h), m_painter->brush());
}
}

/***************************************************************************************************/
void PaintCommands::command_noop(QRegularExpressionMatch)
Expand Down
4 changes: 4 additions & 0 deletions tests/auto/other/lancelot/paintcommands.h
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,10 @@ class PaintCommands
void command_drawStaticText(QRegularExpressionMatch re);
void command_drawTextDocument(QRegularExpressionMatch re);
void command_drawTiledPixmap(QRegularExpressionMatch re);
void command_fillRect(QRegularExpressionMatch re);
void command_fillRectF(QRegularExpressionMatch re);

// paths
void command_path_addEllipse(QRegularExpressionMatch re);
void command_path_addPolygon(QRegularExpressionMatch re);
void command_path_addRect(QRegularExpressionMatch re);
Expand Down
121 changes: 121 additions & 0 deletions tests/auto/other/lancelot/scripts/fillrect.qps
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
setRenderHint Antialiasing false

# offscreen
translate 0 -200

begin_block rects
# int API
fillRect 10 10 20 20 green
fillRect 40 10 20 20
drawRect 70 10 20 20

# float API, int values
fillRectF 10.0 40.0 20.0 20.0 green
fillRectF 40.0 40.0 20.0 20.0
drawRect 70.0 40.0 20.0 20.0

# float API, float values
fillRectF 10.0 70.0 20.5 20.5 green
fillRectF 40.0 70.0 20.5 20.5
drawRect 70.0 70.0 20.5 20.5

# alignment, int api, color
fillRect 10 100 10 10 green
fillRect 20 100 10 10 green
fillRect 10 110 10 10 green
fillRect 20 110 10 10 green

# alignment, int api, brush
fillRect 40 100 10 10
fillRect 50 100 10 10
fillRect 40 110 10 10
fillRect 50 110 10 10

# alignment comparison
drawRect 70 100 10 10
drawRect 80 100 10 10
drawRect 70 110 10 10
drawRect 80 110 10 10

# alignment, float api, color
fillRectF 10.0 130.0 10.0 10.0 green
fillRectF 20.0 130.0 10.0 10.0 green
fillRectF 10.0 140.0 10.0 10.0 green
fillRectF 20.0 140.0 10.0 10.0 green

# alignment, float api, brush
fillRectF 40.0 130.0 10.0 10.0
fillRectF 50.0 130.0 10.0 10.0
fillRectF 40.0 140.0 10.0 10.0
fillRectF 50.0 140.0 10.0 10.0

# alignment comparison
drawRect 70.0 130.0 10.0 10.0
drawRect 80.0 130.0 10.0 10.0
drawRect 70.0 140.0 10.0 10.0
drawRect 80.0 140.0 10.0 10.0

end_block

begin_block row

repeat_block rects

save
translate 100.2 0.2
repeat_block rects
restore

save
translate 200.5 0.5
repeat_block rects
restore

save
translate 300.7 0.7
repeat_block rects
restore

end_block

# end of block defs

resetMatrix

setPen NoPen
setBrush green
repeat_block row

save
translate 500 50
scale 0.42 0.42
repeat_block row
restore

save
translate 0 160
scale 1.8 0.8
repeat_block row
restore

save
translate 650 320
rotate 80
repeat_block row
restore

save
setBrush green Dense2Pattern
translate 0 400
repeat_block row
restore

save
gradient_clearStops
gradient_appendStop 0 green
gradient_appendStop 1 blue
gradient_setCoordinateMode ObjectBoundingMode
gradient_setLinear 0.0 0.0 1.0 1.0
translate 0 600
repeat_block row
restore
121 changes: 121 additions & 0 deletions tests/auto/other/lancelot/scripts/fillrect_aa.qps
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
setRenderHint Antialiasing true

# offscreen
translate 0 -200

begin_block rects
# int API
fillRect 10 10 20 20 green
fillRect 40 10 20 20
drawRect 70 10 20 20

# float API, int values
fillRectF 10.0 40.0 20.0 20.0 green
fillRectF 40.0 40.0 20.0 20.0
drawRect 70.0 40.0 20.0 20.0

# float API, float values
fillRectF 10.0 70.0 20.5 20.5 green
fillRectF 40.0 70.0 20.5 20.5
drawRect 70.0 70.0 20.5 20.5

# alignment, int api, color
fillRect 10 100 10 10 green
fillRect 20 100 10 10 green
fillRect 10 110 10 10 green
fillRect 20 110 10 10 green

# alignment, int api, brush
fillRect 40 100 10 10
fillRect 50 100 10 10
fillRect 40 110 10 10
fillRect 50 110 10 10

# alignment comparison
drawRect 70 100 10 10
drawRect 80 100 10 10
drawRect 70 110 10 10
drawRect 80 110 10 10

# alignment, float api, color
fillRectF 10.0 130.0 10.0 10.0 green
fillRectF 20.0 130.0 10.0 10.0 green
fillRectF 10.0 140.0 10.0 10.0 green
fillRectF 20.0 140.0 10.0 10.0 green

# alignment, float api, brush
fillRectF 40.0 130.0 10.0 10.0
fillRectF 50.0 130.0 10.0 10.0
fillRectF 40.0 140.0 10.0 10.0
fillRectF 50.0 140.0 10.0 10.0

# alignment comparison
drawRect 70.0 130.0 10.0 10.0
drawRect 80.0 130.0 10.0 10.0
drawRect 70.0 140.0 10.0 10.0
drawRect 80.0 140.0 10.0 10.0

end_block

begin_block row

repeat_block rects

save
translate 100.2 0.2
repeat_block rects
restore

save
translate 200.5 0.5
repeat_block rects
restore

save
translate 300.7 0.7
repeat_block rects
restore

end_block

# end of block defs

resetMatrix

setPen NoPen
setBrush green
repeat_block row

save
translate 500 50
scale 0.42 0.42
repeat_block row
restore

save
translate 0 160
scale 1.8 0.8
repeat_block row
restore

save
translate 650 320
rotate 80
repeat_block row
restore

save
setBrush green Dense2Pattern
translate 0 400
repeat_block row
restore

save
gradient_clearStops
gradient_appendStop 0 green
gradient_appendStop 1 blue
gradient_setCoordinateMode ObjectBoundingMode
gradient_setLinear 0.0 0.0 1.0 1.0
translate 0 600
repeat_block row
restore

0 comments on commit ea377c5

Please sign in to comment.