Sophie

Sophie

distrib > Mageia > 7 > x86_64 > by-pkgid > 1dd17e0d683ef79b4bb6872bbf359d7f > files > 6632

qt4-doc-4.8.7-26.2.mga7.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- emb-directfb-EmbLinux.qdoc -->
  <title>Qt 4.8: Qt for Embedded Linux and DirectFB</title>
  <link rel="stylesheet" type="text/css" href="style/style.css" />
  <script src="scripts/jquery.js" type="text/javascript"></script>
  <script src="scripts/functions.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="style/superfish.css" />
  <link rel="stylesheet" type="text/css" href="style/narrow.css" />
  <!--[if IE]>
<meta name="MSSmartTagsPreventParsing" content="true">
<meta http-equiv="imagetoolbar" content="no">
<![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="style/style_ie6.css">
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="style/style_ie7.css">
<![endif]-->
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="style/style_ie8.css">
<![endif]-->

<script src="scripts/superfish.js" type="text/javascript"></script>
<script src="scripts/narrow.js" type="text/javascript"></script>

</head>
<body class="" onload="CheckEmptyAndLoadList();">
 <div class="header" id="qtdocheader">
    <div class="content"> 
    <div id="nav-logo">
      <a href="index.html">Home</a></div>
    <a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a>
    <div id="narrowsearch"></div>
    <div id="nav-topright">
      <ul>
        <li class="nav-topright-home"><a href="http://qt.digia.com/">Qt HOME</a></li>
        <li class="nav-topright-dev"><a href="http://qt-project.org/">DEV</a></li>
        <li class="nav-topright-doc nav-topright-doc-active"><a href="http://qt-project.org/doc/">
          DOC</a></li>
        <li class="nav-topright-blog"><a href="http://blog.qt.digia.com/">BLOG</a></li>
      </ul>
    </div>
    <div id="shortCut">
      <ul>
        <li class="shortCut-topleft-inactive"><span><a href="index.html">Qt 4.8</a></span></li>
        <li class="shortCut-topleft-active"><a href="http://qt-project.org/doc/">ALL VERSIONS        </a></li>
      </ul>
     </div>
 <ul class="sf-menu" id="narrowmenu"> 
             <li><a href="#">API Lookup</a> 
                 <ul> 
                     <li><a href="classes.html">Class index</a></li> 
           <li><a href="functions.html">Function index</a></li> 
           <li><a href="modules.html">Modules</a></li> 
           <li><a href="namespaces.html">Namespaces</a></li> 
           <li><a href="qtglobal.html">Global Declarations</a></li> 
           <li><a href="qdeclarativeelements.html">QML elements</a></li> 
             </ul> 
             </li> 
             <li><a href="#">Qt Topics</a> 
                 <ul> 
                        <li><a href="qt-basic-concepts.html">Programming with Qt</a></li>  
                        <li><a href="qtquick.html">Device UIs &amp; Qt Quick</a></li>  
                        <li><a href="qt-gui-concepts.html">UI Design with Qt</a></li>  
                        <li><a href="supported-platforms.html">Supported Platforms</a></li>  
                        <li><a href="technology-apis.html">Qt and Key Technologies</a></li>  
                        <li><a href="best-practices.html">How-To's and Best Practices</a></li>  
              </ul> 
                 </li> 
                 <li><a href="#">Examples</a> 
                     <ul> 
                       <li><a href="all-examples.html">Examples</a></li> 
                       <li><a href="tutorials.html">Tutorials</a></li> 
                       <li><a href="demos.html">Demos</a></li> 
                       <li><a href="qdeclarativeexamples.html">QML Examples</a></li> 
                </ul> 
                     </li> 
                 </ul> 
    </div>
  </div>
  <div class="wrapper">
    <div class="hd">
      <span></span>
    </div>
    <div class="bd group">
      <div class="sidebar">
        <div class="searchlabel">
          Search index:</div>
        <div class="search" id="sidebarsearch">
          <form id="qtdocsearch" action="" onsubmit="return false;">
            <fieldset>
              <input type="text" name="searchstring" id="pageType" value="" />
 <div id="resultdialog"> 
 <a href="#" id="resultclose">Close</a> 
 <p id="resultlinks" class="all"><a href="#" id="showallresults">All</a> | <a href="#" id="showapiresults">API</a> | <a href="#" id="showarticleresults">Articles</a> | <a href="#" id="showexampleresults">Examples</a></p> 
 <p id="searchcount" class="all"><span id="resultcount"></span><span id="apicount"></span><span id="articlecount"></span><span id="examplecount"></span>&nbsp;results:</p> 
 <ul id="resultlist" class="all"> 
 </ul> 
 </div> 
            </fieldset>
          </form>
        </div>
        <div class="box first bottombar" id="lookup">
          <h2 title="API Lookup"><span></span>
            API Lookup</h2>
          <div  id="list001" class="list">
          <ul id="ul001" >
              <li class="defaultLink"><a href="classes.html">Class index</a></li>
              <li class="defaultLink"><a href="functions.html">Function index</a></li>
              <li class="defaultLink"><a href="modules.html">Modules</a></li>
              <li class="defaultLink"><a href="namespaces.html">Namespaces</a></li>
              <li class="defaultLink"><a href="qtglobal.html">Global Declarations</a></li>
              <li class="defaultLink"><a href="qdeclarativeelements.html">QML elements</a></li>
            </ul> 
          </div>
        </div>
        <div class="box bottombar" id="topics">
          <h2 title="Qt Topics"><span></span>
            Qt Topics</h2>
          <div id="list002" class="list">
            <ul id="ul002" >
               <li class="defaultLink"><a href="qt-basic-concepts.html">Programming with Qt</a></li> 
               <li class="defaultLink"><a href="qtquick.html">Device UIs &amp; Qt Quick</a></li> 
               <li class="defaultLink"><a href="qt-gui-concepts.html">UI Design with Qt</a></li> 
               <li class="defaultLink"><a href="supported-platforms.html">Supported Platforms</a></li>  
               <li class="defaultLink"><a href="technology-apis.html">Qt and Key Technologies</a></li> 
               <li class="defaultLink"><a href="best-practices.html">How-To's and Best Practices</a></li> 
            </ul>  
          </div>
        </div>
        <div class="box" id="examples">
          <h2 title="Examples"><span></span>
            Examples</h2>
          <div id="list003" class="list">
        <ul id="ul003">
              <li class="defaultLink"><a href="all-examples.html">Examples</a></li>
              <li class="defaultLink"><a href="tutorials.html">Tutorials</a></li>
              <li class="defaultLink"><a href="demos.html">Demos</a></li>
              <li class="defaultLink"><a href="qdeclarativeexamples.html">QML Examples</a></li>
            </ul> 
          </div>
        </div>
      </div>
      <div class="wrap">
        <div class="toolbar">
          <div class="breadcrumb toolblock">
            <ul>
              <li class="first"><a href="index.html">Home</a></li>
              <!--  Breadcrumbs go here -->
<li>Qt for Embedded Linux and DirectFB</li>
            </ul>
          </div>
          <div class="toolbuttons toolblock">
            <ul>
              <li id="smallA" class="t_button">A</li>
              <li id="medA" class="t_button active">A</li>
              <li id="bigA" class="t_button">A</li>
              <li id="print" class="t_button"><a href="javascript:this.print();">
                <span>Print</span></a></li>
            </ul>
        </div>
        </div>
        <div class="content mainContent">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#introduction">Introduction</a></li>
<li class="level1"><a href="#using-directfb-with-qt">Using DirectFB with Qt</a></li>
<li class="level2"><a href="#configure">Configure</a></li>
<li class="level2"><a href="#supported-graphics-operations">Supported graphics operations</a></li>
<li class="level2"><a href="#directfb-driver">DirectFB driver</a></li>
<li class="level2"><a href="#optimize-performance-using-define-options">Optimize performance using define options</a></li>
<li class="level2"><a href="#unsupported-graphics-operations">Unsupported graphics operations</a></li>
<li class="level2"><a href="#avoiding-fallbacks">Avoiding fallbacks</a></li>
<li class="level2"><a href="#when-painting-images">When painting images</a></li>
<li class="level2"><a href="#top-level-transparency">Top level transparency</a></li>
</ul>
</div>
<h1 class="title">Qt for Embedded Linux and DirectFB</h1>
<span class="subtitle"></span>
<!-- $$$qt-embeddedLinux-directfb.html-description -->
<div class="descr"> <a name="details"></a>
<a name="introduction"></a>
<h2>Introduction</h2>
<p>DirectFB is an open source LGPL licensed project founded by Denis Oliver Kropp and generally chip vendors start out with the official version and implement their own plugins to optimize the operations their hardware supports.</p>
<p>We recommend using Qt 4.6 or later with DirectFB. Support for DirectFB was introduced into Qt for Embedded Linux as a labs project for Qt 4.3 and folded into Qt as a screen driver for Qt 4.4, but not supported fully. In Qt 4.5, major changes were made to make it work with the optimized raster paint engine. These changes were further improved in Qt 4.6&#x2e;</p>
<a name="using-directfb-with-qt"></a>
<h2>Using DirectFB with Qt</h2>
<p>DirectFB is centered around <a href="http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFBSurface.html">Surfaces</a> which is the equivalent of a <a href="qpaintdevice.html">QPaintDevice</a>. In the Qt/DirectFB plugin, DirectFB maps onto either a <a href="qpixmap.html">QPixmap</a> or a QWindowSurface which essentially means that drawing onto <a href="qpixmap.html">QPixmap</a> or a <a href="qwidget.html">QWidget</a> can be accelerated and drawing onto any other paint device (e.g&#x2e; <a href="qimage.html">QImage</a>) cannot.</p>
<a name="configure"></a>
<h3>Configure</h3>
<p>When configuring Qt there are two options, from which you can choose:</p>
<pre class="cpp"> <span class="operator">.</span><span class="operator">/</span>configure <span class="operator">-</span>plugin<span class="operator">-</span>gfx<span class="operator">-</span>directfb
 <span class="operator">.</span><span class="operator">/</span>configure <span class="operator">-</span>qt<span class="operator">-</span>gfx<span class="operator">-</span>directfb</pre>
<p>With either mode, Qt will try the following to look for the DirectFB includes/libs.</p>
<ul>
<li>Use pkg-config</li>
<li>Use directfb-config</li>
<li>Check in your qmake.conf</li>
</ul>
<p>Often the values returned from pkg-config/directfb-config indicates the locations of the libs/headers on the target rootfs, rather than their location on your host. The safest option is usually to explicitly populate these variables in your qmake.conf like this:</p>
<pre class="cpp"> QT_CFLAGS_DIRECTFB <span class="operator">=</span>
 <span class="operator">/</span>opt<span class="operator">/</span>toolchain<span class="operator">/</span>gcc4<span class="operator">.</span><span class="number">3</span>_mipsel_linux<span class="operator">/</span>usr<span class="operator">/</span><span class="keyword">include</span><span class="operator">/</span>directfb <span class="operator">-</span>D_REENTRANT
 QT_LIBS_DIRECTFB <span class="operator">=</span> <span class="operator">-</span>L<span class="operator">/</span>opt<span class="operator">/</span>toolchain<span class="operator">/</span>gcc4<span class="operator">.</span><span class="number">3</span>_mipsel_linux<span class="operator">/</span>usr<span class="operator">/</span>lib<span class="operator">/</span><span class="operator">-</span>ldirect
 <span class="operator">-</span>ldirectfb <span class="operator">-</span>lfusion</pre>
<p><b>Note:</b> While DirectFB supports a multi-process setup through a kernel-extension called Fusion this setup is not well tested with Qt.</p>
<a name="supported-graphics-operations"></a>
<h3>Supported graphics operations</h3>
<p>IDirectFBSurface supports blitting, filling, drawing lines rects etc, but it does not support everything Qt allows you to do. E.g&#x2e; painter paths, polygons, complex transformations, antialiasing, gradients. Some of these things are handled in newer versions of DirectFB and could be supported by Qt. They are seemingly optional at the driver level, so you need to have fall back code paths for older drivers and drivers on which this is not implemented.</p>
<p>The QDirectFBPaintEngine is a subclass of the <a href="qrasterpaintengine.html">QRasterPaintEngine</a>, thus essentially supporting everything <a href="qrasterpaintengine.html">QRasterPaintEngine</a> supports. This means that it supports all graphical operations that Qt supports, but certain operations will have to fall back to software rendering and that should be avoided due to performance issues. Instead, these operations should be rendered into a <a href="qpixmap.html">QPixmap</a> once, and then reuse the pixmap.</p>
<p>Note: Fallbacks to software rendering should be avoided. If unsupported operations are used, the paint engine must fallback to the <a href="qrasterpaintengine.html">QRasterPaintEngine</a> engine. A good debugging tip is to make Qt warn you when such fall backs occur, and to disable the fall back and only return. Debugging options are listed below.</p>
<a name="directfb-driver"></a>
<h3>DirectFB driver</h3>
<p>DirectFB also provides an abstraction for keyboard and mouse drivers. This simplifies the process of getting the target hardware up and running. It also brings us to a feature fragmentation issue between different versions of DirectFB.</p>
<p>The Qt DirectFB driver currently supports DirectFB versions &gt;= 0.9&#x2e; Still, there are large differences in what each actual implementation handles correctly. It is relatively common not to properly support <a href="http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFBWindow">DirectFB windows</a>, so Qt needs to handle this case with a different code path. In addition, certain drivers do not properly support DirectFB's cursor handling. This means Qt has to have a code path for rendering the cursor itself when this is the case. Some drivers do not let us create <a href="http://www.directfb.org/docs/DirectFB_Reference_1_4/types.html#DFBSurfaceDescription">preallocated surfaces</a> which means we have to have a conditional code path for that case.</p>
<a name="optimize-performance-using-define-options"></a>
<h3>Optimize performance using define options</h3>
<p>Qt/DirectFB comes with a number of defines that can be either uncommented in directfb.pri or added to the QT_DEFINES_DIRECTFB variable in your qmake.conf.</p>
<p><b>Note:</b> The defines have been moved from <i>src/plugins/gfxdrivers/directfb/directfb.pro</i> to <i>src/gui/embedded/directfb.pri</i></p>
<pre class="cpp"> <span class="preprocessor">#DIRECTFB_DRAWINGOPERATIONS=DRAW_RECTS|DRAW_LINES|DRAW_IMAGE|DRAW_PIXMAP|</span>
     DRAW_TILED_PIXMAP<span class="operator">|</span>STROKE_PATH<span class="operator">|</span>DRAW_PATH<span class="operator">|</span>DRAW_POINTS<span class="operator">|</span>DRAW_ELLIPSE<span class="operator">|</span>DRAW_POLYGON<span class="operator">|</span>
     DRAW_TEXT<span class="operator">|</span>FILL_PATH<span class="operator">|</span>FILL_RECT<span class="operator">|</span>DRAW_COLORSPANS<span class="operator">|</span>DRAW_ROUNDED_RECT

  <span class="preprocessor">#DEFINES += \&quot;QT_DIRECTFB_WARN_ON_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\&quot;</span>
  <span class="preprocessor">#DEFINES += \&quot;QT_DIRECTFB_DISABLE_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\&quot;</span></pre>
<p>As demonstrated above, you need to tell Qt which drawing operations you want to warn/disable. Since there are varying implementations of DirectFB from manufacturer to manufacture, different operations will be optimized. This require you to define the operations you want to warn about or disable. These are listed above in the DIRECTFB_DRAWINGOPERATIONS variable.</p>
<p>You can also customize this with environment variables.</p>
<p>E.g&#x2e; If you want to disable fallbacks for drawPixmap and fillRect and also get a warning printed on stderr when a fallback would have happened.</p>
<pre class="cpp"> $ <span class="keyword">export</span> QT_DIRECTFB_WARN_ON_RASTERFALLBACKS<span class="operator">=</span><span class="string">&quot;FILL_RECT|DRAW_PIXMAP&quot;</span>
 $ <span class="keyword">export</span> QT_DIRECTFB_DISABLE_RASTERFALLBACKS<span class="operator">=</span><span class="string">&quot;FILL_RECT|DRAW_PIXMAP&quot;</span>
 $ <span class="operator">.</span><span class="operator">/</span>app <span class="operator">-</span>qws <span class="operator">-</span>display directfb</pre>
<p>Following is a table showing which options you have.</p>
<table class="generic">
<thead><tr class="qt-style"><th >Define option</th><th >Description</th></tr></thead>
<tr valign="top" class="odd"><td >QT_DIRECTFB_IMAGECACHE</td><td >Defining this means that Qt will cache an IDirectFBSurface per <a href="qimage.html">QImage</a> you draw based on its <a href="qimage.html#cacheKey">cacheKey()</a>. Use this define if your application draws many QImages that remain the same. Note that if you in this situation draw an image and then change it, by calling bits() or opening a <a href="qpainter.html">QPainter</a> on it, the cache will not benefit you. You can control the cache size with the imageCacheSize connect option.</td></tr>
<tr valign="top" class="even"><td >QT_NO_DIRECTFB_WM</td><td >If your DirectFB implementation does not support windows, you have to define this to make Qt work properly. You can test this by checking if the <a href="http://www.directfb.org/index.php?path=Main%2FDownloads&amp;page=1">df_window example</a> runs well. This means that all drawing operations onto a <a href="qwidget.html">QWidget</a> involves an extra blitting step since Qt essentially first has to draw into an off-screen buffer and then blit this buffer to the back buffer of the primary surface. Finally, Qt must flip the back buffer to the front buffer, which usually involves another blit. Still, blits are usually very fast with DirectFB.<p>To work around this you can make your widget paint on screen, <a href="qt.html#WidgetAttribute-enum">Qt::WA_PaintOnScreen</a> but this comes with other limitations. This should be avoided if you want more than one full-screen window in your application. In addition, it will not work without proper DirectFB mouse support from the layer. Also, see QT_NO_DIRECTFB_LAYER for more.</p>
</td></tr>
<tr valign="top" class="odd"><td >QT_NO_DIRECTFB_LAYER</td><td >If your DirectFB display layer cannot be used for e.g&#x2e; drawing mouse cursor, creating windows you have to define this. Defining this also requires defining QT_NO_DIRECTFB_WM and involves making Qt render the cursor rather than letting DirectFB do it.</td></tr>
<tr valign="top" class="even"><td >QT_NO_DIRECTFB_PALETTE</td><td >Define this if your DirectFB driver does not support surfaces with <a href="http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFBPalette.html">color tables</a>. The effect of defining this is that Qt will have to convert images with <a href="qimage.html#Format-enum">QImage::Format_Indexed8</a> format to another format before rendering them.</td></tr>
<tr valign="top" class="odd"><td >QT_NO_DIRECTFB_PREALLOCATED</td><td >Define this if your DirectFB driver does not support creating a surface with preallocated data. This will make a more frequent use of <a href="http://www.cplusplus.com/reference/clibrary/cstring/memcpy/">memcpy()</a> when drawing images. If you define this, you might want to consider defining QT_DIRECTFB_IMAGECACHE for better image rendering performance.</td></tr>
<tr valign="top" class="even"><td >QT_NO_DIRECTFB_MOUSE and QT_NO_DIRECTFB_KEYBOARD</td><td >Define this if your driver does not provide keyboard/mouse events through <a href="http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFB_CreateInputEventBuffer.html">CreateInputEventBuffer</a>. This means that Qt cannot use DirectFB to receive keyboard/mouse events and if you want such events in your application, you will have to provide another driver. For more info see <a href="qt-embedded-pointer.html">Qt for Embedded Linux Pointer Handling</a> and <a href="qt-embedded-charinput.html">Qt for Embedded Linux Character Input</a></td></tr>
<tr valign="top" class="odd"><td >QT_DIRECTFB_TIMING</td><td >Define this when debugging to get output on stderr about the frames per second.</td></tr>
<tr valign="top" class="even"><td >QT_NO_DIRECTFB_OPAQUE_DETECTION</td><td >When blitting a surface Qt has to decide whether to set the <a href="http://www.directfb.org/docs/DirectFB_Reference_1_4/types.html#DFBSurfaceBlittingFlags">DSBLIT_BLEND_ALPHACHANNEL</a> flag. If you load an image from file or network data that has a format that includes an alpha channel, the image might still be completely opaque. Normally Qt runs through every pixel to check if there really is an alpha channel there. This involves some overhead but usually pays off in the end because blitting is cheaper than blending. If you define this Qt will assume that an image with a format that has alpha channel contains at least one pixel with an alpha value != 255.</td></tr>
<tr valign="top" class="odd"><td >QT_DIRECTFB_SUBSURFACE</td><td >Defining this enables a mode that tries to minimize overhead from locking/unlocking surfaces. Note that this currently is experimental.</td></tr>
<tr valign="top" class="even"><td >QT_DIRECTFB_WINDOW_AS_CURSOR</td><td >Define this if your DirectFB implementation supports windows but can not render the cursor properly. This involves creating a small top level window and moving it around when the cursor moves. It does not always perform well.</td></tr>
<tr valign="top" class="odd"><td >QT_NO_DIRECTFB_IMAGEPROVIDER</td><td >By default Qt will use DirectFB to load QPixmaps from disk/memory. If your DirectFB implementation does not support this it might make sense to define this. If you see strange rendering issues with pixmaps that have an alpha channel defining this could solve the problem.</td></tr>
<tr valign="top" class="even"><td >QT_DIRECTFB_IMAGEPROVIDER_KEEPALIVE</td><td >Define this to make sure Qt always keeps at least one <a href="http://directfb.org/docs/DirectFB_Reference_1_4/IDirectFBImageProvider.html">IDirectFBImageProvider</a> object alive. This is to avoid considerable overhead when the first IDirectFBImageProvider is created, the last IDirectFBImageProvider is removed.</td></tr>
</table>
<a name="unsupported-graphics-operations"></a>
<h3>Unsupported graphics operations</h3>
<p>There are a number of unsupported operations causing fallbacks. DirectFB does not support the following functions.</p>
<table class="generic">
<thead><tr class="qt-style"><th >Functions</th></tr></thead>
<tr valign="top" class="odd"><td >QPainter::strokePath(const <a href="qpainterpath.html">QPainterPath</a> &amp; path, const <a href="qpen.html">QPen</a> &amp; pen)</td></tr>
<tr valign="top" class="even"><td >QPainter::drawPath(const <a href="qpainterpath.html">QPainterPath</a> &amp; path)</td></tr>
<tr valign="top" class="odd"><td >QPainter::fillPath(const <a href="qpainterpath.html">QPainterPath</a> &amp; path, const <a href="qbrush.html">QBrush</a> &amp; brush)</td></tr>
<tr valign="top" class="even"><td >QPainter::drawPoints(const <a href="qpointf.html">QPointF</a> * points, int pointCount)</td></tr>
<tr valign="top" class="odd"><td >QPainter::drawEllipse(const <a href="qrectf.html">QRectF</a> &amp; rectangle)</td></tr>
<tr valign="top" class="even"><td >QPainter::drawPolygon(const <a href="qpointf.html">QPointF</a> * points, int pointCount, <a href="qt.html#FillRule-enum">Qt::FillRule</a> fillRule = <a href="qt.html#FillRule-enum">Qt::OddEvenFill</a>)</td></tr>
<tr valign="top" class="odd"><td >QPainter::drawText(const <a href="qpointf.html">QPointF</a> &amp; position, const <a href="qstring.html">QString</a> &amp; text)</td></tr>
<tr valign="top" class="even"><td ><a href="qgradient.html">QGradient</a></td></tr>
</table>
<a name="avoiding-fallbacks"></a>
<h3>Avoiding fallbacks</h3>
<p>To avoid fallbacks make sure that the following points are true:</p>
<ul>
<li><a href="qpen.html#isSolid">QPen::isSolid</a>() returns true and uses a color with a one pixel width. (<a href="qpen.html#width">QPen::width</a>() returns 1.</li>
<li>QTransform::TransformationType() &lt;= <a href="qtransform.html#TransformationType-enum">QTransform::TxScale</a> are not supported.</li>
<li>Clipping must be a simple rectangle or a <a href="qregion.html">QRegion</a>.</li>
</ul>
<a name="when-painting-images"></a>
<h3>When painting images</h3>
<p><b>Note:</b> You should use <a href="qpixmap.html">QPixmap</a> instead of <a href="qimage.html">QImage</a>. QImages are drawn by the <a href="qrasterpaintengine.html">QRasterPaintEngine</a>. To get a warning for every fallback to the <a href="qrasterpaintengine.html">QRasterPaintEngine</a>, use QT_DIRECTFB_WARN_ON_RASTERFALLBACKS. If QT_DIRECTFB_DISABLE_RASTERFALLBACKS is defined, DirectFB will only return instead of falling back to <a href="qrasterpaintengine.html">QRasterPaintEngine</a>. Please note that these defines should only be used when optimizing the application.</p>
<a name="top-level-transparency"></a>
<h3>Top level transparency</h3>
<p><b>Note:</b> DirectFB supports partially or fully transparent top level windows, either through QWidget::setWindowOpacity or through setting a non-opaque background brush. Note that for the latter it is not supported to change an opaque window to be transparent at runtime.</p>
</div>
<!-- @@@qt-embeddedLinux-directfb.html -->
      </div>
    </div>
    </div> 
    <div class="ft">
      <span></span>
    </div>
  </div> 
  <div class="footer">
    <p>
      <acronym title="Copyright">&copy;</acronym> 2015 The Qt Company Ltd.
      Documentation contributions included herein are the copyrights of
      their respective owners.</p>
    <br />
    <p>
      The documentation provided herein is licensed under the terms of the
      <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
      License version 1.3</a> as published by the Free Software Foundation.</p>
    <p>
      Documentation sources may be obtained from <a href="http://www.qt-project.org">
      www.qt-project.org</a>.</p>
    <br />
    <p>
      Qt and respective logos are trademarks of The Qt Company Ltd 
      in Finland and/or other countries worldwide. All other trademarks are property
      of their respective owners. <a title="Privacy Policy"
      href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p>
  </div>

  <script src="scripts/functions.js" type="text/javascript"></script>
</body>
</html>