void veSphereRenderer::render(veNode *node, veRenderableObject *renderableObj, veCamera *camera, unsigned int contextID) { updateBuffer(contextID); veRenderCommand rc; rc.mask = node->getMask(); rc.worldMatrix = new veMat4Ptr(node->getNodeToWorldMatrix()); //rc.attachedNode = node; rc.camera = camera; rc.sceneManager = camera->getSceneManager(); rc.depthInCamera = (camera->viewMatrix() * rc.worldMatrix->value())[2][3]; rc.renderer = this; rc.contextID = contextID; auto material = renderableObj->getMaterial(); for (unsigned int i = 0; i < material->activeTechnique()->getPassNum(); ++i) { auto pass = material->activeTechnique()->getPass(i); if (camera->getMask() & pass->drawMask()) { bool isTransparent = pass->blendFunc() != veBlendFunc::DISABLE ? true : false; rc.pass = pass; pass->visit(rc); if (isTransparent) camera->getRenderQueue()->pushCommand(i, veRenderQueue::RENDER_QUEUE_TRANSPARENT, rc); else camera->getRenderQueue()->pushCommand(i, veRenderQueue::RENDER_QUEUE_ENTITY, rc); } } }
void Sprite::Draw(HDC hBackBufferDC) const { if( myImageMask != 0 ) drawMask(hBackBufferDC); else drawTransparent(hBackBufferDC); }
void PixelsMovement::getDraggedImageCopy(base::UniquePtr<Image>& outputImage, base::UniquePtr<Mask>& outputMask) { gfx::Rect bounds = m_currentData.transformedBounds(); base::UniquePtr<Image> image(Image::create(m_sprite->pixelFormat(), bounds.w, bounds.h)); drawImage(image, bounds.origin(), false); // Draw mask without shrinking it, so the mask size is equal to the // "image" render. base::UniquePtr<Mask> mask(new Mask); drawMask(mask, false); // Now we can shrink and crop the image. gfx::Rect oldMaskBounds = mask->bounds(); mask->shrink(); gfx::Rect newMaskBounds = mask->bounds(); if (newMaskBounds != oldMaskBounds) { newMaskBounds.x -= oldMaskBounds.x; newMaskBounds.y -= oldMaskBounds.y; image.reset(crop_image(image, newMaskBounds.x, newMaskBounds.y, newMaskBounds.w, newMaskBounds.h, 0)); } outputImage.reset(image.release()); outputMask.reset(mask.release()); }
//-------------------------------------------------------------- void ofApp::draw(){ ofClear(0,0); if (doDrawCamBackground.get()) drawSource(); if (!toggleGuiDraw) { ofHideCursor(); drawComposite(); } else { ofShowCursor(); switch(drawMode.get()) { case DRAW_COMPOSITE: drawComposite(); break; case DRAW_PARTICLES: drawParticles(); break; case DRAW_FLUID_FIELDS: drawFluidFields(); break; case DRAW_FLUID_DENSITY: drawFluidDensity(); break; case DRAW_FLUID_VELOCITY: drawFluidVelocity(); break; case DRAW_FLUID_PRESSURE: drawFluidPressure(); break; case DRAW_FLUID_TEMPERATURE: drawFluidTemperature(); break; case DRAW_FLUID_DIVERGENCE: drawFluidDivergence(); break; case DRAW_FLUID_VORTICITY: drawFluidVorticity(); break; case DRAW_FLUID_BUOYANCY: drawFluidBuoyance(); break; case DRAW_FLUID_OBSTACLE: drawFluidObstacle(); break; case DRAW_FLOW_MASK: drawMask(); break; case DRAW_OPTICAL_FLOW: drawOpticalFlow(); break; case DRAW_SOURCE: drawSource(); break; case DRAW_MOUSE: drawMouseForces(); break; case DRAW_VELDOTS: drawVelocityDots(); break; } drawGui(); } }
void ofxLayerMask::drawOverlay() { if(overlayOn) { overlayHeight = thumbSize * (layers.size() + 1) + (overlayPadding * layers.size()); //Draw overlay panel x = ofGetWidth() - tripleThumbWidth - textAreaWidth - quadruplePadding - overlayMargin; y = ofGetHeight() - overlayHeight - doublePadding - overlayMargin; drawDebugBox(x, y, tripleThumbWidth + textAreaWidth + quadruplePadding, overlayHeight + doublePadding); //Draw layers x += overlayPadding; y += overlayPadding; for(int i = 0; i < layers.size(); i++) { ofDrawBitmapString("Layer " + ofToString(i + 1), x, y + halfThumbHeight + 4); drawDebugBox(x - 1 + textAreaWidth, y - 1, thumbWidth + 2, thumbHeight + 2, ofColor(255, 255, 255, 150)); drawLayer(i, x + textAreaWidth, y, thumbWidth, thumbHeight, false); drawDebugBox(x - 1 + textAreaWidth + thumbWidth + overlayPadding, y - 1, thumbWidth + 2, thumbHeight + 2, ofColor(255, 255, 255, 150)); drawMask(i, x + textAreaWidth + thumbWidth + overlayPadding, y, thumbWidth, thumbHeight); drawDebugBox(x - 1 + textAreaWidth + doubleThumbWidth + doublePadding, y - 1, thumbWidth + 2, thumbHeight + 2, ofColor(255, 255, 255, 150)); drawLayer(i, x + textAreaWidth + doubleThumbWidth + doublePadding, y, thumbWidth, thumbHeight); y += thumbHeight + overlayPadding; } //Draw composite thumbnail ofDrawBitmapString("Composite", x, y + halfThumbHeight + 4); drawDebugBox(x - 1 + textAreaWidth + doubleThumbWidth + doublePadding, y - 1, thumbWidth + 2, thumbHeight + 2, ofColor(255, 255, 255, 150)); draw(x + textAreaWidth + doubleThumbWidth + doublePadding, y, thumbWidth, thumbHeight); } }
//-------------------------------------------------------------- void Surface::renderOffscreen(bool isRenderDevicePoints) { m_fbo.begin(); m_animationManager.M_drawCanvas(m_fbo.getWidth(),m_fbo.getHeight()); drawRenderTarget(); drawMask(); m_fbo.end(); }
static void putDigit(GDISPLAY_WIDGET* widget, PIXEL fontWidth, PIXEL fontHeight, char c, boolean dot, char old, boolean olddot) { NUMBER_WIDGET* numb = (NUMBER_WIDGET*)widget; GDISPLAY* display = widget->_owner_; // Get the mask of things to show uint8_t mask = segled8_get_mask(c); if(dot) { mask |= 1; } // Get the mask of old things on show uint8_t oldmask; if(numb->_props_.first) { oldmask = 0; } else { oldmask = segled8_get_mask(old); if(olddot) { oldmask |= 1; } } // Find which segments have changed state uint8_t changes; changes = mask ^ oldmask; if( changes !=0 ) { // Something has changed PIXEL fh = fontHeight / 2; PIXEL fw = fontWidth * 5 / 8; // Get the segments to remove uint8_t remove = oldmask & changes; // remove = 0xff; // remove all if(remove) { drawMask(display,fw,fh,remove,&numb->_props_.dial); } // Get the segments to add uint8_t add = mask & changes; // add = mask; // add all if(add) { drawMask(display,fw,fh,add,&numb->_widget_.content); } } }
virtual void onDrawContent(SkCanvas* canvas) { SkRect r; r.set(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(120), SkIntToScalar(120)); canvas->saveLayer(&r, nullptr); canvas->drawColor(SK_ColorRED); drawMask(canvas, r); canvas->restore(); }
void gMainWindow::setMask(bool vl) { if (_mask == vl) return; _mask = vl; drawMask(); }
virtual void onDrawContent(SkCanvas* canvas) { SkRect r; r.set(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(120), SkIntToScalar(120)); canvas->saveLayer(&r, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag); canvas->drawColor(SK_ColorRED); drawMask(canvas, r); canvas->restore(); }
void Graphics::paintEvent(QPaintEvent *) { drawBackground(); if (data.length() > 0){ if (type == Graphics::Lines){ drawLines(); drawMask(); }else if (type == Graphics::Sectors) drawSectors(); drawLegend(); } }
void veOverlayRenderer::render(veNode *node, veRenderableObject *renderableObj, veCamera *camera, unsigned int contextID) { updateBuffer(contextID); veRenderCommand rc; rc.priority = _renderOrder; rc.mask = node->getMask(); rc.worldMatrix = new veMat4Ptr(node->getNodeToWorldMatrix()); //rc.attachedNode = node; rc.camera = camera; rc.sceneManager = camera->getSceneManager(); rc.renderer = this; rc.contextID = contextID; auto material = renderableObj->getMaterial(); for (unsigned int i = 0; i < material->activeTechnique()->getPassNum(); ++i) { auto pass = material->activeTechnique()->getPass(i); if (camera->getMask() & pass->drawMask()) { rc.pass = pass; pass->visit(rc); camera->getRenderQueue()->pushCommand(i, veRenderQueue::RENDER_QUEUE_OVERLAY, rc); } } }
/*--------------------------/ ステージ選択時 /--------------------------*/ void StageSelectActionLayer::stageSelected(int tag){ //ローカルレイヤー生成 auto layer = Layer::create(); //メニュー母体生成 auto menu = Menu::create(); menu->setPosition( Vec2::ZERO ); //layer->addChild(menu); //各自追加 drawMask(layer); drawExplain(layer); buttonYes(layer,menu,tag); buttonNo(layer,menu); layer->addChild(menu); //タッチの無効化 isButton(false); //レイヤーに追加 this->addChild(layer); }
void gMainWindow::setPicture(gPicture *pic) { gPicture::assign(&_picture, pic); drawMask(); }
void gMainWindow::setVisible(bool vl) { if (!vl) _hidden = true; if (vl == isVisible()) return; if (vl) { bool arr = !isVisible(); emitOpen(); if (!opened) return; _not_spontaneous = !visible; visible = true; _hidden = false; setTransparent(_transparent); if (isTopLevel()) { if (!_title || !*_title) gtk_window_set_title(GTK_WINDOW(border), gApplication::defaultTitle()); /*if (!_xembed) { fprintf(stderr, "gtk_window_group_add_window: %p -> %p\n", border, gApplication::currentGroup()); gtk_window_group_add_window(gApplication::currentGroup(), GTK_WINDOW(border)); fprintf(stderr, "-> %p\n", gtk_window_get_group(GTK_WINDOW(border))); }*/ // Thanks for Ubuntu's GTK+ patching :-( #if GTK_CHECK_VERSION(3,0,0) gtk_window_set_has_resize_grip(GTK_WINDOW(border), false); #else if (g_object_class_find_property(G_OBJECT_GET_CLASS(border), "has-resize-grip")) g_object_set(G_OBJECT(border), "has-resize-grip", false, (char *)NULL); #endif gtk_window_move(GTK_WINDOW(border), bufX, bufY); if (isPopup()) { gtk_widget_show_now(border); gtk_widget_grab_focus(border); } else gtk_window_present(GTK_WINDOW(border)); if (isUtility()) { gMainWindow *parent = _current; if (!parent && gApplication::mainWindow() && gApplication::mainWindow() != this) parent = gApplication::mainWindow(); if (parent) gtk_window_set_transient_for(GTK_WINDOW(border), GTK_WINDOW(parent->border)); } if (gApplication::mainWindow() == this) { int desktop = session_manager_get_desktop(); if (desktop >= 0) { //fprintf(stderr, "X11_window_set_desktop: %d (%d)\n", desktop, true); X11_window_set_desktop((Window)handle(), true, desktop); session_manager_set_desktop(-1); } } } else { gtk_widget_show(border); parent()->performArrange(); } drawMask(); if (focus) { //fprintf(stderr, "focus = %s\n", focus->name()); focus->setFocus(); focus = 0; } if (skipTaskBar()) _activate = true; if (arr) performArrange(); } else { if (this == _active) focus = gApplication::activeControl(); _not_spontaneous = visible; gContainer::setVisible(false); if (_popup) gApplication::exitLoop(this); if (gApplication::_button_grab && !gApplication::_button_grab->isReallyVisible()) gApplication::setButtonGrab(NULL); } }
void PixelsMovement::redrawCurrentMask() { drawMask(m_currentMask, true); }
void veTerrainRenderer::render(veNode *node, veRenderableObject *renderableObj, veCamera *camera, unsigned int contextID) { auto vao = _vaoBuffer->getData(contextID); if (!vao) { vao = _vaoBuffer->createData(contextID); _needRefresh = true; } auto terrainGrid = static_cast<veTerrainGrid *>(renderableObj); if (_needRefresh) { glBindVertexArray(vao); auto vbo = _vboBuffer->getData(contextID); if (!vbo){ vbo = _vboBuffer->createData(contextID); } glBindBuffer(GL_ARRAY_BUFFER, vbo); if (!terrainGrid->getVertexArray()->empty()) glBufferData(GL_ARRAY_BUFFER, terrainGrid->getVertexArray()->size() * sizeof((*terrainGrid->getVertexArray())[0]), terrainGrid->getVertexArray()->buffer(), GL_DYNAMIC_DRAW); unsigned int stride = terrainGrid->getVertexStride(); unsigned int offsets = 0; for (unsigned int i = 0; i < terrainGrid->getVertexAtrributeNum(); ++i) { glVertexAttribPointer(i, terrainGrid->getVertexAtrributeSize(i), GL_FLOAT, GL_FALSE, stride, (GLvoid *)(sizeof(GLfloat) * offsets)); glEnableVertexAttribArray(i); offsets += terrainGrid->getVertexAtrributeSize(i); } auto ibo = _iboBuffer->getData(contextID); if (!ibo){ ibo = _iboBuffer->createData(contextID); } glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo); if (!terrainGrid->getIndexArray()->empty()) glBufferData(GL_ELEMENT_ARRAY_BUFFER, terrainGrid->getIndexArray()->size() * sizeof((*terrainGrid->getIndexArray())[0]), terrainGrid->getIndexArray()->buffer(), GL_STATIC_DRAW); _indicesCount = (GLsizei)terrainGrid->getIndexArray()->size(); _needRefresh = false; } veRenderCommand rc; rc.mask = node->getMask(); rc.worldMatrix = new veMat4Ptr(node->getNodeToWorldMatrix()); rc.camera = camera; rc.sceneManager = camera->getSceneManager(); rc.depthInCamera = (camera->viewMatrix() * rc.worldMatrix->value())[2][3]; rc.renderer = this; rc.contextID = contextID; auto material = renderableObj->getMaterial(); for (unsigned int i = 0; i < material->activeTechnique()->getPassNum(); ++i) { auto pass = material->activeTechnique()->getPass(i); if (camera->getMask() & pass->drawMask()) { bool isTransparent = pass->blendFunc() != veBlendFunc::DISABLE ? true : false; rc.pass = pass; pass->visit(rc); if (isTransparent) camera->getRenderQueue()->pushCommand(i, veRenderQueue::RENDER_QUEUE_TRANSPARENT, rc); else camera->getRenderQueue()->pushCommand(i, veRenderQueue::RENDER_QUEUE_ENTITY, rc); } } }
void RDTransportButton::drawOffCap() { QPainter p; QPointArray triangle=QPointArray(3); int edge; if(height()<width()) { edge=height(); } else { edge=width(); } drawMask(off_cap); p.begin(off_cap); p.setPen(QColor(black)); p.setBrush(QColor(black)); switch(button_type) { case RDTransportButton::Play: triangle.setPoint(0,width()/2-(3*edge)/10,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2+(3*edge)/10,height()/2); triangle.setPoint(2,width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.lineTo(width()/2-(3*edge)/10,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2+(3*edge)/10,height()/2); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); break; case RDTransportButton::Stop: p.fillRect(width()/2-edge*3/10,height()/2-edge*3/10, edge*3/5,edge*3/5,QColor(colorGroup().shadow())); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-edge*3/10,height()/2+edge*3/10); p.lineTo(width()/2-edge*3/10,height()/2-edge*3/10); p.lineTo(width()/2+edge*3/10,height()/2-edge*3/10); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2+edge*3/10,height()/2+edge*3/10); p.lineTo(width()/2-edge*3/10,height()/2+edge*3/10); break; case RDTransportButton::Record: p.setPen(QColor(darkRed)); p.setBrush(QColor(darkRed)); p.drawEllipse(width()/2-(3*edge)/10,height()/2-(3*edge)/10, (3*edge)/5,(3*edge)/5); break; case RDTransportButton::FastForward: triangle.setPoint(0,width()/2-(3*edge)/10,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2,height()/2); triangle.setPoint(2,width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.lineTo(width()/2-(3*edge)/10,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2,height()/2); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); triangle.setPoint(0,width()/2,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2+(3*edge)/10,height()/2); triangle.setPoint(2,width()/2,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2,height()/2+(3*edge)/10); p.lineTo(width()/2,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2+(3*edge)/10,height()/2); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2,height()/2+(3*edge)/10); break; case RDTransportButton::Rewind: triangle.setPoint(0,width()/2+(3*edge)/10,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2,height()/2); triangle.setPoint(2,width()/2+(3*edge)/10,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2+(3*edge)/10,height()/2-(3*edge)/10); p.lineTo(width()/2,height()/2); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2+(3*edge)/10,height()/2+(3*edge)/10); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2+(3*edge)/10,height()/2-(3*edge)/10); triangle.setPoint(0,width()/2,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2-(3*edge)/10,height()/2); triangle.setPoint(2,width()/2,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2,height()/2-(3*edge)/10); p.lineTo(width()/2-(3*edge)/10,height()/2); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2,height()/2+(3*edge)/10); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2,height()/2-(3*edge)/10); break; case RDTransportButton::Eject: triangle.setPoint(0,width()/2,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2+(3*edge)/10,height()/2); triangle.setPoint(2,width()/2-(3*edge)/10,height()/2); p.drawPolygon(triangle); p.fillRect(width()/2-(3*edge)/10,height()/2+edge/10, (3*edge)/5,edge/5,QColor(black)); break; case RDTransportButton::Pause: p.fillRect(width()/2-(3*edge)/10,height()/2-(3*edge)/10, (3*edge)/15,(3*edge)/5,QColor(black)); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.lineTo(width()/2-(3*edge)/10,height()/2-(3*edge)/10); p.lineTo(width()/2-(3*edge)/10+(3*edge)/15,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2-(3*edge)/10+(3*edge)/15,height()/2+(3*edge)/10); p.lineTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.fillRect(width()/2+(3*edge)/30,height()/2-(3*edge)/10, (3*edge)/15,(3*edge)/5,QColor(black)); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2+(3*edge)/30,height()/2+(3*edge)/10); p.lineTo(width()/2+(3*edge)/30,height()/2-(3*edge)/10); p.lineTo(width()/2+(3*edge)/10,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2+(3*edge)/10,height()/2+(3*edge)/10); p.lineTo(width()/2+(3*edge)/30,height()/2+(3*edge)/10); break; case RDTransportButton::PlayFrom: p.fillRect(width()/2-(3*edge)/10,height()/2-(3*edge)/10, 3,(3*edge)/5,QBrush(accent_color)); triangle.setPoint(0,width()/2-(2*edge)/10+1,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2+(3*edge)/10+1,height()/2); triangle.setPoint(2,width()/2-(2*edge)/10+1,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-(2*edge)/10+1,height()/2+(3*edge)/10); p.lineTo(width()/2-(2*edge)/10+1,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2+(3*edge)/10+1,height()/2); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2-(2*edge)/10+1,height()/2+(3*edge)/10); break; case RDTransportButton::PlayBetween: p.fillRect(width()/2-(3*edge)/10,height()/2-(3*edge)/10, 3,(3*edge)/5,QBrush(accent_color)); p.fillRect(width()/2+(3*edge)/10,height()/2-(3*edge)/10, 3,(3*edge)/5,QBrush(accent_color)); triangle.setPoint(0,width()/2-(2*edge)/10+1,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2+(2*edge)/10+1,height()/2); triangle.setPoint(2,width()/2-(2*edge)/10+1,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-(2*edge)/10+1,height()/2+(3*edge)/10); p.lineTo(width()/2-(2*edge)/10+1,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2+(2*edge)/10+1,height()/2); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2-(2*edge)/10+1,height()/2+(3*edge)/10); break; case RDTransportButton::Loop: triangle.setPoint(0,width()/2-(2*edge)/10+1,height()/2-(edge)/4); triangle.setPoint(1,width()/2+(edge)/10+1,height()/2-edge/10); triangle.setPoint(2,width()/2-(2*edge)/10+1,height()/2+edge/20); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-(2*edge)/10+1,height()/2+(edge)/4); p.lineTo(width()/2+(edge)/10+1,height()/2-edge/10); p.setPen(QColor(colorGroup().dark())); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2-(2*edge)/10+1,height()/2+(edge)/4); p.setPen(QColor(colorGroup().shadow())); p.drawArc(width()/6,height()/2-edge/9,2*width()/3, height()/3+edge/10,1440,5760); break; case RDTransportButton::Up: triangle.setPoint(0,width()/2,(3*edge)/10); triangle.setPoint(1,width()/2+(3*edge)/10,height()-(3*edge)/10); triangle.setPoint(2,width()/2-(3*edge)/10,height()-(3*edge)/10); p.drawPolygon(triangle); break; case RDTransportButton::Down: triangle.setPoint(0,width()/2,height()-(3*edge)/10); triangle.setPoint(1,width()/2+(3*edge)/10,(3*edge)/10); triangle.setPoint(2,width()/2-(3*edge)/10,(3*edge)/10); p.drawPolygon(triangle); break; case RDTransportButton::PlayTo: p.fillRect(width()/2+(3*edge)/10,height()/2-(3*edge)/10, 3,(3*edge)/5,QBrush(accent_color)); triangle.setPoint(0,width()/2-(3*edge)/10,height()/2-(3*edge)/10); triangle.setPoint(1,width()/2+(2*edge)/10+1,height()/2); triangle.setPoint(2,width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.drawPolygon(triangle); p.setPen(QColor(colorGroup().shadow())); p.moveTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); p.lineTo(width()/2-(3*edge)/10,height()/2-(3*edge)/10); p.setPen(QColor(colorGroup().dark())); p.lineTo(width()/2+(2*edge)/10+1,height()/2); p.setPen(QColor(colorGroup().light())); p.lineTo(width()/2-(3*edge)/10,height()/2+(3*edge)/10); break; } p.end(); }
int main(int argc, char ** argv) { FILE * fp; char * line = NULL; size_t len = 0; ssize_t read; int numberOfImages; IplImage *src, *dst, *smallRes; IplImage **timages; printf("Start processing images\n"); //load source image, which is USA map dst = cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR); // Read all hex codes, then create mask for each // Draw image to that mask fp = fopen("stateHex.txt", "r"); if (fp == NULL) exit(EXIT_FAILURE); while ((read = getline(&line, &len, fp)) != -1) { if(line[read-1] == '\n') { line[read-1] = '\0'; --read; } // TODO: split line into State code and Color code // Get mask based on color code (which is line currently) // TODO: use color code extracted from string above instead of line CvSize size = cvGetSize(dst); IplImage *mask = drawMask(dst, size.width, size.height, line); // Find the bounding box surround the state // CvRect bounding is what we are looking for CvSeq *contours = 0; CvMemStorage *mem; mem = cvCreateMemStorage(0); int n = cvFindContours( mask, mem, &contours, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0)); CvSeq* ptr = 0; CvRect bounding; for (ptr = contours; ptr != NULL; ptr = ptr->h_next) { bounding = cvBoundingRect(ptr, 0); } // TODO: use State code to pull image from Instagram // TODO: use bounding.width and bounding.height to resize state image // TODO: load resized state image into src src = cvLoadImage("test.jpg", CV_LOAD_IMAGE_COLOR); // printf("%d %d %d %d\n", bounding.x, bounding.y, bounding.width, bounding.height); // Set ROI of output file and mask to be at bounding box cvSetImageROI(dst, bounding); cvSetImageROI(mask, bounding); // If size of state image is the same as of bounding box, comment out this line cvSetImageROI(src, cvRect(0, 0, bounding.width, bounding.height)); // Copy state image into state area cvCopy(src, dst, mask); // Reset the ROI of output file cvResetImageROI(dst); } // Generate output file cvSaveImage("output.png", dst, NULL); printf("Done processing images\n"); // This is how to display image, until user press ESC key // cvNamedWindow("img", 0); // cvMoveWindow("img", 200, 200); // char k; // k = cvWaitKey(0); // if(k == 'ESC') { // cvShowImage("img", src); // cvReleaseImage(&src); // } return 0; }