Rect LineString::boundingRect() { if(!isEmpty()) { Rect bounding(first()); for(const Pos& p : *this) bounding.extend(p); return bounding; } else return Rect(); }
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)); }
/// /// \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(); } }
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); } }
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); }
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); }