summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Sherlock <chris.sherlock@collabora.com>2015-01-28 15:30:04 +1100
committerChris Sherlock <chris.sherlock79@gmail.com>2015-01-28 08:50:28 +0000
commit20b02912eb12b33ad8353226540821285f64e0cd (patch)
treed3d7f63f983c449e60c2b87a0acfd71bc7959767
parent607ad59737919167047eb2ed713a5999a22c18e0 (diff)
vcldemo: include new text demo
Take two: the text demo now shows: - clipping - arabic text - rotated text It shows this in a new window, subdivided into 8 demo screens to cover all permutations of clipping, arabic and rotated text. I've also clipped the main screen's boxes to make it look a little neater. Change-Id: Iaba1c29503266b72cbdcc2f48b309c28c94022b8 Reviewed-on: https://gerrit.libreoffice.org/14215 Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com> Tested-by: Chris Sherlock <chris.sherlock79@gmail.com>
-rw-r--r--vcl/workben/vcldemo.cxx112
1 files changed, 60 insertions, 52 deletions
diff --git a/vcl/workben/vcldemo.cxx b/vcl/workben/vcldemo.cxx
index c32f5703730f..00d2043a70ff 100644
--- a/vcl/workben/vcldemo.cxx
+++ b/vcl/workben/vcldemo.cxx
@@ -300,23 +300,52 @@ public:
{
RENDER_DETAILS(text,KEY_T,1)
- bool mbClip;
- bool mbArabicText;
- bool mbRotate;
+ virtual void RenderRegion(OutputDevice &rDev, Rectangle r,
+ const RenderContext &rCtx) SAL_OVERRIDE
+ {
+ if (rCtx.meStyle == RENDER_EXPANDED)
+ {
+ std::vector<Rectangle> aRegions(DemoRenderer::partition(rCtx, 4, 2));
+ DemoRenderer::clearRects(rDev, aRegions);
- DrawText()
- : mbClip (false)
- , mbArabicText (false)
- , mbRotate (false) {}
+ bool bClip=true, bArabicText=true, bRotate=true;
- DrawText( bool bClip, bool bArabicText, bool bRotate )
- : mbClip (bClip)
- , mbArabicText (bArabicText)
- , mbRotate (bRotate) {}
+ int nRegions=0;
- virtual void RenderRegion(OutputDevice &rDev, Rectangle r,
- const RenderContext &) SAL_OVERRIDE
+ for (int nClipRow=0; nClipRow < 2; nClipRow++)
+ {
+ if (!bArabicText)
+ bArabicText=true;
+
+ for (int nArabicRow=0; nArabicRow < 2; nArabicRow++)
+ {
+ if (!bRotate)
+ bRotate=true;
+
+ for (int nRotateRow=0; nRotateRow < 2; nRotateRow++)
+ {
+ drawText( rDev, aRegions[nRegions], bClip, bArabicText, bRotate );
+
+ nRegions++;
+ bRotate=false;
+ }
+
+ bArabicText=false;
+ }
+
+ bClip=false;
+ }
+ }
+ else
+ {
+ drawText(rDev, r, false, false, false);
+ }
+ }
+
+ void drawText (OutputDevice &rDev, Rectangle r, bool bClip, bool bArabicText, bool bRotate)
{
+ rDev.SetClipRegion( vcl::Region(r) );
+
OUString aLatinText("Click any rect to zoom!!!!");
const unsigned char pTextUTF8[] = {
@@ -331,19 +360,19 @@ public:
RTL_TEXTENCODING_UTF8 );
OUString aText;
+
int nPrintNumCopies=0;
- if (mbArabicText)
+ if (bArabicText)
{
aText = aArabicText;
- nPrintNumCopies=2;
+ nPrintNumCopies=20;
}
else
{
aText = aLatinText;
nPrintNumCopies=20;
}
-
std::vector<OUString> maFontNames;
sal_uInt32 nCols[] = {
COL_BLACK, COL_BLUE, COL_GREEN, COL_CYAN, COL_RED, COL_MAGENTA,
@@ -357,50 +386,32 @@ public:
for (size_t i = 0; i < SAL_N_ELEMENTS(pNames); i++)
maFontNames.push_back(OUString::createFromAscii(pNames[i]));
- if (mbClip)
- rDev.SetClipRegion( vcl::Region(r - Point(200, 200) ) );
+ if (bClip)
+ {
+ Rectangle aRect( r.TopLeft(), Size( r.GetWidth()/2, r.GetHeight()/2) );
+ rDev.SetClipRegion( vcl::Region( aRect ) );
+ }
+
+ for (int i = 0; i < nPrintNumCopies; i++)
+ {
+ Rectangle aRect = r;
- for (int i = 0; i < nPrintNumCopies; i++) {
rDev.SetTextColor(Color(nCols[i % SAL_N_ELEMENTS(nCols)]));
// random font size to avoid buffering
vcl::Font aFont( maFontNames[i % maFontNames.size()], Size(0, 1 + i * (0.9 + comphelper::rng::uniform_real_distribution(0.0, std::nextafter(0.1, DBL_MAX))) * (r.Top() - r.Bottom()) / nPrintNumCopies));
- if (mbRotate)
+ if (bRotate)
+ {
+ aRect.TopLeft() = r.BottomLeft();
aFont.SetOrientation(450);
+ }
rDev.SetFont(aFont);
- rDev.DrawText(r, aText.copy(0, 4 + (aText.getLength() - 4) * (nPrintNumCopies - i) / nPrintNumCopies));
+ rDev.DrawText(aRect, aText);
}
-
- if (mbClip)
- rDev.SetClipRegion();
}
};
- struct DrawClipText : public DrawText
- {
- RENDER_DETAILS(cliptext,KEY_T,1)
-
- DrawClipText()
- : DrawText( true, false, false ) {}
- };
-
- struct DrawArabicText : public DrawText
- {
- RENDER_DETAILS(arabictext,KEY_T,1)
-
- DrawArabicText()
- : DrawText( false, true, false ) {}
- };
-
- // struct DrawRotatedText : public DrawText
- // {
- // RENDER_DETAILS(rotatedtext,KEY_T,1)
-
- // DrawRotatedText()
- // : DrawText( false, false, true ) {}
- // };
-
struct DrawCheckered : public RegionRenderer
{
RENDER_DETAILS(checks,KEY_C,20)
@@ -1195,9 +1206,6 @@ void DemoRenderer::InitRenderers()
{
maRenderers.push_back(new DrawLines());
maRenderers.push_back(new DrawText());
- maRenderers.push_back(new DrawClipText());
- maRenderers.push_back(new DrawArabicText());
- //maRenderers.push_back(new DrawRotatedText());
maRenderers.push_back(new DrawPoly());
maRenderers.push_back(new DrawEllipse());
maRenderers.push_back(new DrawCheckered());
@@ -1258,7 +1266,7 @@ void DemoRenderer::addTime(int i, double t)
maRenderers[i]->countTime++;
}
-void DemoRenderer::selectRenderer(const OUString &rName)
+void DemoRenderer::selectRenderer(const OUString &rName )
{
for (size_t i = 0; i < maRenderers.size(); i++)
{