コード例 #1
0
ファイル: linestring.cpp プロジェクト: albar965/atools
Rect LineString::boundingRect()
{
  if(!isEmpty())
  {
    Rect bounding(first());

    for(const Pos& p : *this)
      bounding.extend(p);
    return bounding;
  }
  else
    return Rect();
}
コード例 #2
0
ファイル: Tile.cpp プロジェクト: eorielle/TowerDefense
Tile::Tile(int x, int y)//(row,collone)=(x,y)
{
	positionPixel = sf::Vector2i(x*TILE_WIDTH + 50, y*TILE_HEIGHT + 50);
	position = sf::Vector2i(x, y);
	width = TILE_WIDTH;
	height = TILE_HEIGHT;
	cooldown = 0;
	tower = NULL;
	isHovered = false;	
	isClicked = false;
	isClicking = false;
	hasTw = false;
	currentSprite = 0;
	texture.loadFromFile(TILE_SPRITE);
	sprite.setTexture(texture);	


	sf::IntRect bounding(positionPixel.x + 50, positionPixel.y + 50, TILE_WIDTH, TILE_HEIGHT);//Board size = 50 ?

	boundingBox = sf::IntRect(positionPixel, sf::Vector2i(width, height));

}
コード例 #3
0
ファイル: entity.cpp プロジェクト: zwerfvogel/Almaaz
///
/// \brief      Draws the Ship rotated at the correct angle and at the
///             correct position.
/// \return     void
///
void    Ship::draw() const
{
    const vector2& center_pos   = center_ + pos_;

    // TODO: this is messy because of subtracting center_. Find a more
    //       intuitive way to do it.

    // subtract the center to get back to the original pos_
    // in the new co-ordinate system
    const vector2& A_mc         = A_ - center_;
    const vector2& B_mc         = B_ - center_;
    const vector2& C_mc         = C_ - center_;

    glPushMatrix();
    // rotate around the center of the triangle, so move the
    // co-ordinate system there
    glTranslatef(center_pos[0], center_pos[1], 0);
    glRotatef(rot_angle_, 0.0, 0.0, 1.0);

    glColor3fv(color_);
    drawTriangle(A_mc, B_mc, C_mc);

    // translate back to the original co-ordinate system
    glTranslatef(-center_pos[0], -center_pos[1], 0);

    glPopMatrix();

    const Area& b = bounding();

    glColor3f(0.6, 0.6, 0.6);
    drawRectangle(b.start, b.end, true);

    // draw all the ship's bullets
    for (AmmoClip::const_iterator it = ammo_.begin();
            it != ammo_.end(); ++it) {
        it->draw();
    }
}
コード例 #4
0
void ruiMenuManager::Draw(){
	if (!m_menu) return;

	Font::Face* font = m_engine->content->Fonts()->SystemDefault();
	if (!font) return;

	size_t menuItemCount = m_menu->NumItems();
	rColor color = rColor::White;

	rRect bounding(m_position, m_menuSize);

	m_style->GetColor("background-color", color);
	m_engine->renderer->SpriteBatch()->RenderRectangle(bounding, color, 0.9);
	
	color = rColor::Black;
	m_style->GetColor("color", color);

	for (size_t i = 0; i < menuItemCount; i++){
		rPoint point(bounding.x, bounding.Top() + (i * m_rowHeight));

		m_engine->renderer->SpriteBatch()->RenderString(m_menu->GetItem(i)->Label(), font, point, color, 0.91);
	}
}
コード例 #5
0
ファイル: printpdf.cpp プロジェクト: nathaneltitane/lpub
void Gui::exportAs(QString &suffix)
{
    float pageWidth = page.meta.LPub.page.size.value(0);
    float pageHeight = page.meta.LPub.page.size.value(1);
    if (page.meta.LPub.resolution.type() == DPI) {
        // convert to MM
        pageWidth = int(inches2centimeters(pageWidth)*10);
        pageHeight = int(inches2centimeters(pageHeight)*10);
    }

    QPrinter::PaperSize paperSize = QPrinter::PaperSize();
    QPrinter::Orientation orientation = QPrinter::Orientation();
    int bestSize;
    bestSize = bestPaperSizeOrientation(pageWidth,pageHeight,paperSize,orientation);

    // Convert closest page size to pixels for bounding rect

    if (orientation == QPrinter::Portrait) {
        pageWidth = paperSizes[bestSize].width/10.0;  // in centimeters
        pageHeight = paperSizes[bestSize].height/10.0; // in centimeters
    } else {
        pageWidth = paperSizes[bestSize].height/10.0;  // in centimeters
        pageHeight = paperSizes[bestSize].width/10.0; // in centimeters
    }

    if (resolutionType() == DPI) {
        pageWidth = centimeters2inches(pageWidth);
        pageHeight = centimeters2inches(pageHeight);
    }
    pageWidth *= resolution();
    pageHeight *= resolution();
    if (resolutionType() == DPCM) {
        pageWidth = centimeters2inches(pageWidth);
        pageHeight = centimeters2inches(pageHeight);
    }

    QGraphicsScene scene;
    LGraphicsView  view(&scene);

    int savePageNumber = displayPageNum;

    QFileInfo fileInfo(curFile);
    QString   baseName = fileInfo.baseName();

    //clearPage(KpageView,KpageScene);

    // Strangeness needing to warm up the process?

    QImage image(pageWidth,pageHeight,QImage::Format_ARGB32);

    for (displayPageNum = 1;
            displayPageNum <= maxPages && displayPageNum < 6;
            displayPageNum++) {

        qApp->processEvents();

        QRect  bounding(0,0,pageWidth,pageHeight);
        view.setGeometry(bounding);
        view.setRenderHints(QPainter::Antialiasing |
                            QPainter::TextAntialiasing |
                            QPainter::SmoothPixmapTransform);
        view.scale(1.0,1.0);
        QRectF boundingRect(0.0,0.0,pageWidth,pageHeight);
        view.centerOn(boundingRect.center());
        drawPage(&view,&scene,true);

        QPainter painter;
        painter.begin(&image);
        view.render(&painter);
        QString pn = QString("%1") .arg(displayPageNum);
        image.save(baseName + "_page_" +pn + suffix);
        painter.end();

        clearPage(&view,&scene);
    }

    for (displayPageNum = 1; displayPageNum <= maxPages; displayPageNum++) {

        qApp->processEvents();

        QRect  bounding(0,0,pageWidth,pageHeight);
        view.setGeometry(bounding);
        view.setRenderHints(QPainter::Antialiasing |
                            QPainter::TextAntialiasing |
                            QPainter::SmoothPixmapTransform);
        view.scale(1.0,1.0);
        QRectF boundingRect(0.0,0.0,pageWidth,pageHeight);
        view.centerOn(boundingRect.center());
        drawPage(&view,&scene,true);

        QPainter painter;
        painter.begin(&image);
        view.render(&painter);
        QString pn = QString("%1") .arg(displayPageNum);
        image.save(baseName + "_page_" +pn + suffix);
        painter.end();

        clearPage(&view,&scene);
    }
    displayPageNum = savePageNumber;
    drawPage(KpageView,KpageScene,false);
}
コード例 #6
0
ファイル: printpdf.cpp プロジェクト: nathaneltitane/lpub
void Gui::printToFile()
{
    float pageWidth = page.meta.LPub.page.size.value(0);
    float pageHeight = page.meta.LPub.page.size.value(1);

    if (page.meta.LPub.resolution.type() == DPI) {
        // convert to MM
        pageWidth = int(inches2centimeters(pageWidth));
        pageHeight = int(inches2centimeters(pageHeight));
    }
    pageWidth  *= 10;  // convert to mm
    pageHeight *= 10;

    QPrinter::PaperSize paperSize = QPrinter::PaperSize();
    QPrinter::Orientation orientation = QPrinter::Orientation();
    int bestSize;
    bestSize = bestPaperSizeOrientation(pageWidth,pageHeight,paperSize,orientation);

    // Convert closest page size to pixels for bounding rect

    if (orientation == QPrinter::Portrait) {
        pageWidth = paperSizes[bestSize].width/10.0;  // in centimeters
        pageHeight = paperSizes[bestSize].height/10.0; // in centimeters
    } else {
        pageWidth = paperSizes[bestSize].height/10.0;  // in centimeters
        pageHeight = paperSizes[bestSize].width/10.0; // in centimeters
    }

    if (resolutionType() == DPI) {
        pageWidth = centimeters2inches(pageWidth);
        pageHeight = centimeters2inches(pageHeight);
    }

    pageWidth *= resolution();
    pageHeight *= resolution();

    if (resolutionType() == DPCM) {
        pageWidth = centimeters2inches(pageWidth);
        pageHeight = centimeters2inches(pageHeight);
    }

    QFileInfo fileInfo(curFile);
    QString   baseName = fileInfo.baseName();

    QString fileName = QFileDialog::getSaveFileName(
                           this,
                           tr("Print File Name"),
                           QDir::currentPath() + "/" + baseName,
                           tr("PDF (*.pdf)\nPDF (*.PDF)"));

    if (fileName == "") {
        return;
    }

    fileInfo.setFile(fileName);

    QString suffix = fileInfo.suffix();
    if (suffix == "") {
        fileName += ".pdf";
    } else if (suffix != ".pdf" && suffix != ".PDF") {
        fileName = fileInfo.path() + "/" + fileInfo.completeBaseName() + ".pdf";
    }

    QPrinter printer(QPrinter::ScreenResolution);
    printer.setOutputFileName(fileName);
    printer.setOrientation(orientation);
    printer.setPaperSize(paperSize);
    printer.setPageMargins(0,0,0,0,QPrinter::Inch);
    printer.setFullPage(true);

    QPainter painter;
    painter.begin(&printer);

    int savePageNumber = displayPageNum;

    QGraphicsScene scene;
    LGraphicsView  view(&scene);

    QRectF boundingRect(0.0,0.0,pageWidth,pageHeight);
    QRect  bounding(0,0,pageWidth,pageHeight);
    view.setMinimumSize(pageWidth,pageHeight);
    view.setMaximumSize(pageWidth,pageHeight);
    view.setGeometry(bounding);
    view.setSceneRect(boundingRect);
    view.setRenderHints(QPainter::Antialiasing |
                        QPainter::TextAntialiasing |
                        QPainter::SmoothPixmapTransform);

    view.scale(1.0,1.0);
    view.centerOn(boundingRect.center());
    clearPage(&view,&scene);

    for (displayPageNum = 1; displayPageNum <= maxPages; displayPageNum++) {

        qApp->processEvents();

        drawPage(&view,&scene,true);
        view.render(&painter);
        clearPage(&view,&scene);

        if (maxPages - displayPageNum > 0) {
            printer.newPage();
        }
    }
    painter.end();
    displayPageNum = savePageNumber;
    drawPage(KpageView,KpageScene,false);
}