Sciana* Sciana::add(){ if (useTexture){ glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, textureID); glBegin(GL_QUADS); glNormal3f( n->getX(), n->getY(), n->getZ()); glTexCoord2f(teksturaLewyDol->getX(), teksturaLewyDol->getY() ); glVertex3f(a->getX(), a->getY(), a->getZ()); glTexCoord2f(teksturaPrawaGora->getX(), teksturaLewyDol->getY() ); glVertex3f(b->getX(), b->getY(), b->getZ()); glTexCoord2f(teksturaPrawaGora->getX(), teksturaPrawaGora->getY() ); glVertex3f(c->getX(), c->getY(), c->getZ()); glTexCoord2f(teksturaLewyDol->getX(), teksturaPrawaGora->getY() ); glVertex3f(d->getX(), d->getY(), d->getZ()); glEnd(); glDisable(GL_TEXTURE_2D); } else { glBegin(GL_POLYGON); glNormal3f( n->getX(), n->getY(), n->getZ()); glColor4f(kolor->getR(),kolor->getG(),kolor->getB(), kolor->getAlfa() ); glVertex3f(a->getX(), a->getY(), a->getZ()); glVertex3f(b->getX(), b->getY(), b->getZ()); glVertex3f(c->getX(), c->getY(), c->getZ()); glVertex3f(d->getX(), d->getY(), d->getZ()); glEnd(); } finishDrawing(); return this; }
bool DrawCircleTool::mouseReleaseEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { Q_UNUSED(widget); if (!isDrawingButton(event->button())) { if (event->button() == Qt::RightButton) abortDrawing(); return false; } if (!editingInProgress()) return false; updateStatusText(); if (dragging || second_point_set) { cur_pos = event->pos(); cur_pos_map = map_coord; if (dragging && !second_point_set) opposite_pos_map = map_coord; updateCircle(); finishDrawing(); return true; } return false; }
void OgreBuilding::render() { while (readNextSymbol()) { if (!boundingBox->encloses(cursor.getPosition())) { finishDrawing(); break; } } Ogre::String name = buildingObject->getName(); buildingObject->convertToMesh(name + "Mesh"); Ogre::SceneNode* sceneNode = parentSceneNode->createChildSceneNode(name+"Node"); Ogre::StaticGeometry* staticObject = sceneManager->createStaticGeometry(name+"Static"); Ogre::Entity* entity; entity = sceneManager->createEntity(name + "Entity", name + "Mesh"); entity->setCastShadows(true); staticObject->addEntity(entity, Ogre::Vector3(0,0,0)); staticObject->setCastShadows(true); staticObject->build(); //sceneNode->attachObject(entity); }
Obraz* Obraz::add(){ obrazek->translate( 0.0f, 0.0f, szerokoscY / 2 + szerokoscRamka / 2); obrazek->rotate( 90, 1.0f, 0.0f, 0.0f ); obrazek->scale( szerokoscX, szerokoscY, 0.5f ); obrazek->add(); gornaRama->translate( 0.0f, 0.0f, szerokoscY + szerokoscRamka); gornaRama->rotate( 90, 1.0f, 0.0f, 0.0f ); gornaRama->scale( szerokoscX + szerokoscRamka * 2, szerokoscRamka, 1.0f); gornaRama->add(); dolnaRama->translate( 0.0f, 0.0f, szerokoscRamka * 0.5 ); dolnaRama->rotate( 90, 1.0f, 0.0f, 0.0f ); dolnaRama->scale( szerokoscX + szerokoscRamka * 2, szerokoscRamka, 1.0f); dolnaRama->add(); lewaRama->translate( -szerokoscX / 2 -szerokoscRamka * 0.5, 0.0f, szerokoscRamka + szerokoscY / 2 ); lewaRama->rotate( 90, 1.0f, 0.0f, 0.0f ); lewaRama->scale( szerokoscRamka, szerokoscY, 1.0f); lewaRama->add(); prawaRama->translate( szerokoscX / 2 + szerokoscRamka * 0.5, 0.0f, szerokoscRamka + szerokoscY / 2 ); prawaRama->rotate( 90, 1.0f, 0.0f, 0.0f ); prawaRama->scale( szerokoscRamka, szerokoscY, 1.0f); prawaRama->add(); finishDrawing(); return this; }
void DrawLineAndAreaTool::setDrawingSymbol(const Symbol* symbol) { // Avoid using deleted symbol if (map()->findSymbolIndex(drawing_symbol) == -1) symbol = NULL; // End current editing if (editingInProgress()) { if (symbol) finishDrawing(); else abortDrawing(); } // Handle new symbol if (!is_helper_tool) drawing_symbol = symbol; if (!symbol) deactivate(); else if (symbol->isHidden()) deactivate(); else if ((symbol->getType() & (Symbol::Line | Symbol::Area | Symbol::Combined)) == 0) switchToDefaultDrawTool(symbol); else createPreviewPoints(); }
bool DrawRectangleTool::mouseDoubleClickEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { Q_UNUSED(map_coord); Q_UNUSED(widget); if (event->button() != Qt::LeftButton) return false; if (editingInProgress()) { // Finish drawing by double click. // As the double click is also reported as two single clicks first // (in total: press - release - press - double - release), // need to undo two steps in general. if (angles.size() > 2 && !ctrl_pressed) { undoLastPoint(); updateHover(false); } if (angles.size() <= 1) { abortDrawing(); } else { constrained_pos_map = MapCoordF(preview_path->getCoordinate(angles.size() - 1)); undoLastPoint(); finishDrawing(); } no_more_effect_on_click = true; } return true; }
bool DrawPathTool::keyPressEvent(QKeyEvent* event) { bool key_handled = false; if (editingInProgress()) { key_handled = true; if (event->key() == Qt::Key_Escape) abortDrawing(); else if (event->key() == Qt::Key_Backspace) undoLastPoint(); else if (event->key() == Qt::Key_Return && allow_closing_paths) { if (! (event->modifiers() & Qt::ControlModifier)) closeDrawing(); finishDrawing(); } else key_handled = false; } else if (event->key() == Qt::Key_Backspace && finished_path_is_selected) { key_handled = removeLastPointFromSelectedPath(); } if (event->key() == Qt::Key_Tab) deactivate(); else if (event->key() == Qt::Key_Space) { draw_dash_points = !draw_dash_points; updateStatusText(); } else if (event->key() == Qt::Key_Control) { ctrl_pressed = true; angle_helper->setActive(true); if (editingInProgress() && !dragging) updateDrawHover(); picked_angle = false; updateStatusText(); } else if (event->key() == Qt::Key_Shift) { shift_pressed = true; if (!dragging) { updateHover(); updateDirtyRect(); } updateStatusText(); } else return key_handled; return true; }
Obiekt3D* Walec::add() { if (useTexture){ dol->add(); for (int i = 0; i<n; i++) sciany[i]->add(); gora->translate(0,0,1); gora->add(); finishDrawing(); }else{ dol->add(); for (int i = 0; i<n; i++){ sciany[i]->add(); } gora->translate(0,0,1); gora->add(); finishDrawing(); } return this; }
Obiekt3D* Fotel::add() { // A->scale(7,2,5); // A->translate( -4,2,0); // A->translate( 0.5f, 0.5f, 0.0f ); // A->add(); // // B->scale(7,2,5); // B->translate( -4,-3,0); // B->translate( 0.5f, 0.5f, 0.0f ); // B->add(); // // C->scale(4,4,2); // C->translate(0,-2,0); // C->translate( 0.5f, 0.5f, 0.0f ); // C->add(); // // D->scale(5*M_SQRT2, 4, 2*M_SQRT2); // D->translate(0, -2, 0); // D->rotate( (3/4)*M_PI, 0, 1, 0); // D->translate(0, 2, 0); // D->translate( 0.5f, 0.5f, 0.0f ); // D->add(); C->translate( 1.5f, 0.0f, 0.0f ); C->scale( 3.0f, 4.0f, 2.0f ); C->add(); A->translate( 0.5f, 3.0f, 0.0f ); A->scale( 5.0f, 2.0f, 3.0f ); A->add(); B->translate( 0.5f, -3.0f, 0.0f ); B->scale( 5.0f, 2.0f, 3.0f ); B->add(); D->translate( 0.0f, 0.0f, 1.0f ); D->rotate( -45, 0.0f, 1.0f, 0.0f ); D->scale( 2*M_SQRT2, 4.0f, 4*M_SQRT2 ); D->add(); finishDrawing(); return this; }
bool DrawPathTool::mouseDoubleClickEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { Q_UNUSED(map_coord); Q_UNUSED(widget); if (event->button() != Qt::LeftButton) return false; if (editingInProgress()) { if (created_point_at_last_mouse_press) undoLastPoint(); if (editingInProgress()) finishDrawing(); } return true; }
bool DrawRectangleTool::mouseReleaseEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { cur_pos = event->pos(); cur_pos_map = map_coord; if (shift_pressed) cur_pos_map = MapCoordF(snap_helper->snapToObject(cur_pos_map, widget)); constrained_pos_map = cur_pos_map; if (no_more_effect_on_click) { no_more_effect_on_click = false; return true; } if (ctrl_pressed && event->button() == Qt::LeftButton && !editingInProgress()) { pickDirection(cur_pos_map, widget); return true; } bool result = false; if (editingInProgress()) { if (isDrawingButton(event->button()) && dragging) { dragging = false; result = mousePressEvent(event, cur_pos_map, widget); } if (event->button() == Qt::RightButton && drawOnRightClickEnabled()) { if (!dragging) { constrained_pos_map = MapCoordF(preview_path->getCoordinate(angles.size() - 1)); undoLastPoint(); } if (editingInProgress()) // despite undoLastPoint() finishDrawing(); return true; } } return result; }
bool DrawFreehandTool::mouseReleaseEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { Q_UNUSED(widget); if (!editingInProgress()) return false; if (!dragging) { abortDrawing(); return true; } else if (dragging && event->button() == Qt::LeftButton) { cur_pos = event->pos(); cur_pos_map = map_coord; updatePath(); finishDrawing(); return true; } return false; }
void AngleTool::handlePointAddition() { if (m_2DViewer->hasInput()) { if (m_2DViewer->getInteractor()->GetRepeatCount() == 0) { if (m_state == None) { this->annotateFirstPoint(); } else if (m_state == FirstPointFixed) { this->fixFirstSegment(); } else { // Voldrem enregistrar l'Ășltim punt, pertant posem l'estat a none m_state = None; finishDrawing(); } } } }
bool DrawPathTool::mouseReleaseEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { if (!isDrawingButton(event->button())) return false; left_mouse_down = false; if (picking_angle) { picking_angle = false; picked_angle = pickAngle(map_coord, widget); return true; } else if (!editingInProgress()) { return false; } if (following) { finishFollowing(); if ((event->button() == Qt::RightButton) && drawOnRightClickEnabled()) finishDrawing(); return true; } if (!create_segment) return true; if (previous_point_is_curve_point && !dragging && !create_spline_corner) { // The new point has not been added yet MapCoord coord; if (shift_pressed) { coord = snap_helper->snapToObject(map_coord, widget); } else if (angle_helper->isActive()) { QPointF constrained_pos; angle_helper->getConstrainedCursorPositions(map_coord, constrained_pos_map, constrained_pos, widget); coord = MapCoord(constrained_pos_map); } else { coord = MapCoord(map_coord); } if (draw_dash_points) coord.setDashPoint(true); preview_path->addCoordinate(coord); updatePreviewPath(); updateDirtyRect(); } previous_point_is_curve_point = dragging; if (previous_point_is_curve_point) { QPointF constrained_pos; angle_helper->getConstrainedCursorPositions(map_coord, constrained_pos_map, constrained_pos, widget); previous_pos_map = click_pos_map; previous_drag_map = constrained_pos_map; previous_point_direction = calculateRotation(constrained_pos.toPoint(), constrained_pos_map); } updateAngleHelper(); create_spline_corner = false; path_has_preview_point = false; dragging = false; if ((event->button() == Qt::RightButton) && drawOnRightClickEnabled()) finishDrawing(); return true; }
bool DrawPathTool::mousePressEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { cur_map_widget = widget; created_point_at_last_mouse_press = false; if (editingInProgress() && ((event->button() == Qt::RightButton) && !drawOnRightClickEnabled())) { finishDrawing(); return true; } else if (editingInProgress() && ((event->button() == Qt::RightButton && event->buttons() & Qt::LeftButton) || (event->button() == Qt::LeftButton && event->buttons() & Qt::RightButton))) { if (!previous_point_is_curve_point) undoLastPoint(); if (editingInProgress()) finishDrawing(); return true; } else if (isDrawingButton(event->button())) { dragging = false; bool start_appending = false; if (shift_pressed) { SnappingToolHelperSnapInfo snap_info; MapCoord snap_coord = snap_helper->snapToObject(map_coord, widget, &snap_info); click_pos_map = MapCoordF(snap_coord); cur_pos_map = click_pos_map; click_pos = widget->mapToViewport(click_pos_map).toPoint(); // Check for following and appending if (!is_helper_tool) { if (!editingInProgress()) { if (snap_info.type == SnappingToolHelper::ObjectCorners && (snap_info.coord_index == 0 || snap_info.coord_index == snap_info.object->asPath()->getCoordinateCount() - 1) && snap_info.object->getSymbol() == editor->activeSymbol()) { // Appending to another path start_appending = true; startAppending(snap_info); } // Setup angle helper if (snap_helper->snapToDirection(map_coord, widget, angle_helper.data())) picked_angle = true; } else if (editingInProgress() && (snap_info.type == SnappingToolHelper::ObjectCorners || snap_info.type == SnappingToolHelper::ObjectPaths) && snap_info.object->getType() == Object::Path) { // Start following another path startFollowing(snap_info, snap_coord); return true; } } } else if (!editingInProgress() && ctrl_pressed) { // Start picking direction of an existing object picking_angle = true; pickAngle(map_coord, widget); return true; } else { click_pos = event->pos(); click_pos_map = map_coord; cur_pos_map = map_coord; } if (!editingInProgress()) { // Start a new path startDrawing(); angle_helper->setCenter(click_pos_map); updateSnapHelper(); path_has_preview_point = false; previous_point_is_curve_point = false; appending = start_appending; } else { if (!shift_pressed) angle_helper->getConstrainedCursorPosMap(click_pos_map, click_pos_map); cur_pos_map = click_pos_map; } // Set path point auto coord = MapCoord { click_pos_map }; if (draw_dash_points) coord.setDashPoint(true); if (preview_path->getCoordinateCount() > 0 && picked_angle) picked_angle = false; if (previous_point_is_curve_point) { // Do nothing yet, wait until the user drags or releases the mouse button } else if (path_has_preview_point) { preview_path->setCoordinate(preview_path->getCoordinateCount() - 1, coord); updateAngleHelper(); created_point_at_last_mouse_press = true; } else { if (preview_path->getCoordinateCount() == 0 || !preview_path->getCoordinate(preview_path->getCoordinateCount() - 1).isPositionEqualTo(coord)) { preview_path->addCoordinate(coord); updatePreviewPath(); if (!start_appending) updateAngleHelper(); created_point_at_last_mouse_press = true; } } path_has_preview_point = false; create_segment = true; updateDirtyRect(); updateStatusText(); return true; } return false; }
Studzienka* Studzienka::add() { dno->scale( szerokoscX, szerokoscY, 0.5f ); dno->add(); gornyMurek->translate( 0.0f, 0.5*szerokoscY + 0.5*szerokoscRamka, 0.0f ); gornyMurek->scale( szerokoscX + szerokoscRamka * 2, szerokoscRamka, wysokoscMurka); gornyMurek->add(); dolnyMurek->translate( 0.0f, -0.5*szerokoscY - 0.5*szerokoscRamka, 0.0f ); dolnyMurek->scale( szerokoscX + szerokoscRamka * 2, szerokoscRamka, wysokoscMurka); dolnyMurek->add(); lewyMurek->translate( -0.5*szerokoscX - 0.5*szerokoscRamka, 0.0f, 0.0f ); //lewyMurek->rotate(90, 0.0f, 0.0f, 1.0f); lewyMurek->scale(szerokoscRamka, szerokoscY, wysokoscMurka); lewyMurek->add(); prawyMurek->translate( 0.5*szerokoscX + 0.5*szerokoscRamka, 0.0f, 0.0f ); //prawyMurek->rotate(90, 0.0f, 0.0f, 1.0f); prawyMurek->scale(szerokoscRamka, szerokoscY, wysokoscMurka); prawyMurek->add(); //Sciana *pedzelSciany = new Sciana(); int a = liczbaCykliFal; int b= dokladnoscNaCykl; int c= a*b; float pr = przesuniecie; float pw = poziomWody; float wf = wysokoscFali; float sc = szerokoscX / c; float dc = szerokoscY / c; glPushMatrix(); glTranslatef(-0.5*szerokoscX, -0.5*szerokoscY,0); //glColor4f(0.0f, 0.0f, 0.4f, 0.2f); // glColorMaterial(GL_FRONT_AND_BACK,GL_EMISSION); // glEnable( GL_COLOR_MATERIAL); glEnable(GL_BLEND); for(int i = 0; i < c; i++){ for(int j = 0; j < c; j++) { Punkt *a1 = new Punkt(sc*i, dc *j, pw + wf* (sin(sc*i + pr) + sin(dc * j + pr) ) ); Punkt *b1 = new Punkt(sc*(i+1), dc *j, pw + wf*(sin(sc* (i+1) +pr) + sin(dc * j +pr) ) ); Punkt *c1 = new Punkt(sc*(i+1), dc *(j+1), pw + wf*(sin(sc*(i+1) +pr) + sin(dc * (j+1) +pr) ) ); Punkt *d1 = Punkt::normal( a1, b1, c1); glBegin(GL_QUADS); // glColor4f(0.0f, 0.0f, 0.4f, 0.2f); //glColor3f(0.0f, 0.0f, 0.4f); glNormal3f(d1->getX(), d1->getY(), d1->getZ()); glVertex3f(a1->getX(), a1->getY(), a1->getZ()); glVertex3f(b1->getX(), b1->getY(), b1->getZ()); glVertex3f(c1->getX(), c1->getY(), c1->getZ()); //glVertex3f(sc*i, dc *j, pw + wf* (sin(sc*i + pr) + sin(dc * j + pr) ) ); //glVertex3f(sc*(i+1), dc *j, pw + wf*(sin(sc* (i+1) +pr) + sin(dc * j +pr) ) ); //glVertex3f(sc*(i+1), dc *(j+1), pw + wf*(sin(sc*(i+1) +pr) + sin(dc * (j+1) +pr) ) ); glVertex3f(sc*i, dc *(j+1), pw + wf*(sin(sc*i +pr) + sin(dc * (j+1) +pr) ) ); glEnd(); delete a1; delete b1; delete c1; delete d1; } } // glDisable( GL_COLOR_MATERIAL); // glColor4f(1.0f, 1.0f, 1.f, 0.0f); glDisable(GL_BLEND); glPopMatrix(); finishDrawing(); przesuniecie += 0.03; return this; }
bool DrawRectangleTool::mousePressEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { // Adjust flags to have possibly more recent state int modifiers = (event->modifiers() | (key_button_bar ? key_button_bar->activeModifiers() : 0)); ctrl_pressed = modifiers & Qt::ControlModifier; shift_pressed = modifiers & Qt::ShiftModifier; cur_map_widget = widget; if (isDrawingButton(event->button())) { dragging = false; click_pos = event->pos(); click_pos_map = map_coord; cur_pos = event->pos(); cur_pos_map = click_pos_map; if (shift_pressed) cur_pos_map = MapCoordF(snap_helper->snapToObject(cur_pos_map, widget)); constrained_pos_map = cur_pos_map; if (!editingInProgress()) { if (ctrl_pressed) { // Pick direction pickDirection(cur_pos_map, widget); } else { // Start drawing if (angle_helper->isActive()) angle_helper->setCenter(click_pos_map); startDrawing(); MapCoord coord = MapCoord(cur_pos_map); coord.setDashPoint(draw_dash_points); preview_path->addCoordinate(coord); preview_path->addCoordinate(coord); angles.push_back(0); updateStatusText(); } } else { if (angles.size() >= 2 && drawingParallelTo(angles[angles.size() - 2])) { // Drawing parallel to last section, just move the last point undoLastPoint(); } // Add new point int cur_point_index = angles.size(); if (!preview_path->getCoordinate(cur_point_index).isPositionEqualTo(preview_path->getCoordinate(cur_point_index - 1))) { MapCoord coord = MapCoord(cur_pos_map); coord.setDashPoint(draw_dash_points); preview_path->addCoordinate(coord); if (angles.size() == 1) { // Bring to correct number of points: line becomes a rectangle preview_path->addCoordinate(coord); } angles.push_back(0); angle_helper->setActive(true, MapCoordF(preview_path->getCoordinate(cur_point_index))); angle_helper->clearAngles(); angle_helper->addAngles(angles[0], M_PI/4); if (event->button() != Qt::RightButton || !drawOnRightClickEnabled()) { updateHover(false); updateHover(false); // Call it again, really. } } } } else if (event->button() == Qt::RightButton && editingInProgress()) { constrained_pos_map = MapCoordF(preview_path->getCoordinate(angles.size() - 1)); undoLastPoint(); if (editingInProgress()) // despite undoLastPoint() finishDrawing(); no_more_effect_on_click = true; } else { return false; } return true; }
bool DrawRectangleTool::keyPressEvent(QKeyEvent* event) { if (event->key() == Qt::Key_Return) { if (editingInProgress()) { if (angles.size() <= 1) abortDrawing(); else { constrained_pos_map = MapCoordF(preview_path->getCoordinate(angles.size() - 1)); undoLastPoint(); finishDrawing(); } } } else if (event->key() == Qt::Key_Escape) { if (editingInProgress()) abortDrawing(); } else if (event->key() == Qt::Key_Backspace) { if (editingInProgress()) { undoLastPoint(); updateHover(false); } } else if (event->key() == Qt::Key_Tab) { deactivate(); } else if (event->key() == Qt::Key_Space) { draw_dash_points = !draw_dash_points; updateStatusText(); } else if (event->key() == Qt::Key_Control) { ctrl_pressed = true; if (editingInProgress() && angles.size() == 1) { angle_helper->clearAngles(); angle_helper->addDefaultAnglesDeg(0); angle_helper->setActive(true, MapCoordF(preview_path->getCoordinate(0))); if (dragging) updateRectangle(); } else if (editingInProgress() && angles.size() > 2) { // Try to snap to existing lines updateRectangle(); } updateStatusText(); } else if (event->key() == Qt::Key_Shift) { shift_pressed = true; updateHover(false); updateStatusText(); } else return false; return true; }
void DrawLineAndAreaTool::finishDrawing() { finishDrawing(NULL); }