~ubuntu-branches/ubuntu/precise/kstars/precise-proposed

« back to all changes in this revision

Viewing changes to kstars/skymapdrawabstract.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2011-12-16 13:14:42 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20111216131442-dfrjlt6pests9qu1
Tags: 4:4.7.90-0ubuntu1
New upstream beta release

Show diffs side-by-side

added added

removed removed

Lines of Context:
60
60
    m_framecount = 0;
61
61
}
62
62
 
63
 
void SkyMapDrawAbstract::drawOverlays( QPainter& p ) {
 
63
void SkyMapDrawAbstract::drawOverlays( QPainter& p, bool drawFov ) {
64
64
    if( !KStars::Instance() )
65
65
        return;
66
66
 
67
67
    //draw labels
68
68
    SkyLabeler::Instance()->draw(p);
69
69
 
70
 
    //draw FOV symbol
71
 
    foreach( FOV* fov, m_KStarsData->getVisibleFOVs() ) {
72
 
        fov->draw(p, Options::zoomFactor());
 
70
    if( drawFov ) {
 
71
        //draw FOV symbol
 
72
        foreach( FOV* fov, m_KStarsData->getVisibleFOVs() ) {
 
73
            fov->draw(p, Options::zoomFactor());
 
74
        }
73
75
    }
74
76
    drawTelescopeSymbols( p );
75
77
    drawZoomBox( p );
310
312
#endif
311
313
}
312
314
 
313
 
void SkyMapDrawAbstract::exportSkyImage( QPaintDevice *pd ) {
 
315
void SkyMapDrawAbstract::exportSkyImage( QPaintDevice *pd, bool scale ) {
314
316
    SkyQPainter p(m_SkyMap, pd); // FIXME: Really, we should be doing this differently. We shouldn't be passing m_SkyMap, but rather, this widget.
315
317
    p.begin();
316
 
    p.setRenderHint(QPainter::Antialiasing, Options::useAntialias() );
317
 
 
318
 
    //scale image such that it fills 90% of the x or y dimension on the paint device
319
 
    double xscale = double(p.device()->width()) / double(m_SkyMap->width());
320
 
    double yscale = double(p.device()->height()) / double(m_SkyMap->height());
321
 
    double scale = qMin(xscale,yscale);
322
 
 
323
 
    p.scale(scale,scale);
324
 
 
325
 
    p.drawSkyBackground();
326
 
    m_KStarsData->skyComposite()->draw( &p );
327
 
    drawOverlays( p );
 
318
    p.setRenderHint(QPainter::SmoothPixmapTransform, true);
 
319
 
 
320
    exportSkyImage(&p, scale);
 
321
 
328
322
    p.end();
329
323
}
330
324
 
 
325
void SkyMapDrawAbstract::exportSkyImage(SkyQPainter *painter, bool scale)
 
326
{
 
327
    painter->setRenderHint(QPainter::Antialiasing, Options::useAntialias());
 
328
 
 
329
    if(scale) {
 
330
        //scale sky image to fit paint device
 
331
        double xscale = double(painter->device()->width()) / double(m_SkyMap->width());
 
332
        double yscale = double(painter->device()->height()) / double(m_SkyMap->height());
 
333
        double scale = qMin(xscale, yscale);
 
334
        painter->scale(scale, scale);
 
335
    }
 
336
 
 
337
    painter->drawSkyBackground();
 
338
    m_KStarsData->skyComposite()->draw(painter);
 
339
    drawOverlays(*painter);
 
340
}
 
341
 
331
342
void SkyMapDrawAbstract::calculateFPS()
332
343
{
333
344
    if(m_framecount == 25) {