//============================================================================== void CodeEditorComponent::mouseDown (const MouseEvent& e) { newTransaction(); dragType = notDragging; if (e.mods.isPopupMenu()) { setMouseCursor (MouseCursor::NormalCursor); if (getHighlightedRegion().isEmpty()) { CodeDocument::Position start, end; document.findTokenContaining (getPositionAt (e.x, e.y), start, end); if (start.getPosition() < end.getPosition()) selectRegion (start, end); } PopupMenu m; m.setLookAndFeel (&getLookAndFeel()); addPopupMenuItems (m, &e); m.showMenuAsync (PopupMenu::Options(), ModalCallbackFunction::forComponent (codeEditorMenuCallback, this)); } else { beginDragAutoRepeat (100); moveCaretTo (getPositionAt (e.x, e.y), e.mods.isShiftDown()); } }
void TMXLayer::setupTileSprite(Sprite* sprite, Point pos, unsigned int gid) { sprite->setPosition(getPositionAt(pos)); sprite->setVertexZ((float)getVertexZForPos(pos)); sprite->setAnchorPoint(Point::ZERO); sprite->setOpacity(m_cOpacity); //issue 1264, flip can be undone as well sprite->setFlippedX(false); sprite->setFlippedY(false); sprite->setRotation(0.0f); sprite->setAnchorPoint(Point(0,0)); // Rotation in tiled is achieved using 3 flipped states, flipping across the horizontal, vertical, and diagonal axes of the tiles. if (gid & kTMXTileDiagonalFlag) { // put the anchor in the middle for ease of rotation. sprite->setAnchorPoint(Point(0.5f,0.5f)); sprite->setPosition(Point(getPositionAt(pos).x + sprite->getContentSize().height/2, getPositionAt(pos).y + sprite->getContentSize().width/2 ) ); unsigned int flag = gid & (kTMXTileHorizontalFlag | kTMXTileVerticalFlag ); // handle the 4 diagonally flipped states. if (flag == kTMXTileHorizontalFlag) { sprite->setRotation(90.0f); } else if (flag == kTMXTileVerticalFlag) { sprite->setRotation(270.0f); } else if (flag == (kTMXTileVerticalFlag | kTMXTileHorizontalFlag) ) { sprite->setRotation(90.0f); sprite->setFlippedX(true); } else { sprite->setRotation(270.0f); sprite->setFlippedX(true); } } else { if (gid & kTMXTileHorizontalFlag) { sprite->setFlippedX(true); } if (gid & kTMXTileVerticalFlag) { sprite->setFlippedY(true); } } }
void CodeEditorComponent::mouseDoubleClick (const MouseEvent& e) { CodeDocument::Position tokenStart (getPositionAt (e.x, e.y)); CodeDocument::Position tokenEnd (tokenStart); if (e.getNumberOfClicks() > 2) { tokenStart.setLineAndIndex (tokenStart.getLineNumber(), 0); tokenEnd.setLineAndIndex (tokenStart.getLineNumber() + 1, 0); } else { while (CharacterFunctions::isLetterOrDigit (tokenEnd.getCharacter())) tokenEnd.moveBy (1); tokenStart = tokenEnd; while (tokenStart.getIndexInLine() > 0 && CharacterFunctions::isLetterOrDigit (tokenStart.movedBy (-1).getCharacter())) tokenStart.moveBy (-1); } moveCaretTo (tokenEnd, false); moveCaretTo (tokenStart, true); }
// TMXLayer - obtaining tiles/gids Sprite * TMXLayer::getTileAt(const Point& pos) { CCASSERT(pos.x < _layerSize.width && pos.y < _layerSize.height && pos.x >=0 && pos.y >=0, "TMXLayer: invalid position"); CCASSERT(_tiles && _atlasIndexArray, "TMXLayer: the tiles map has been released"); Sprite *tile = nullptr; int gid = this->getTileGIDAt(pos); // if GID == 0, then no tile is present if (gid) { int z = (int)(pos.x + pos.y * _layerSize.width); tile = static_cast<Sprite*>(this->getChildByTag(z)); // tile not created yet. create it if (! tile) { Rect rect = _tileSet->rectForGID(gid); rect = CC_RECT_PIXELS_TO_POINTS(rect); tile = Sprite::createWithTexture(this->getTexture(), rect); tile->setBatchNode(this); tile->setPosition(getPositionAt(pos)); tile->setVertexZ((float)getVertexZForPos(pos)); tile->setAnchorPoint(Point::ZERO); tile->setOpacity(_opacity); ssize_t indexForZ = atlasIndexForExistantZ(z); this->addSpriteWithoutQuad(tile, static_cast<int>(indexForZ), z); } } return tile; }
void CodeEditorComponent::mouseDoubleClick (const MouseEvent& e) { CodeDocument::Position tokenStart (getPositionAt (e.x, e.y)); CodeDocument::Position tokenEnd (tokenStart); if (e.getNumberOfClicks() > 2) document.findLineContaining (tokenStart, tokenStart, tokenEnd); else document.findTokenContaining (tokenStart, tokenStart, tokenEnd); selectRegion (tokenStart, tokenEnd); dragType = notDragging; }
glm::mat4 Spline::getTransformMatrix(float u) { auto t = getPositionAt(u); auto z = glm::normalize(-getNextPosition(u)); auto y = vec3(0,1,0); //glm::normalize(getUpPosition(u)); auto x = glm::normalize(glm::cross(y,z)); y = glm::normalize(glm::cross(z,x)); glm::mat4 mat = {x.x,x.y,x.z,0, y.x,y.y,y.z,0, z.x,z.y,z.z,0, t.x,t.y,t.z,1.0f}; return mat; }
void CodeEditorComponent::mouseDown (const MouseEvent& e) { newTransaction(); dragType = notDragging; if (! e.mods.isPopupMenu()) { beginDragAutoRepeat (100); moveCaretTo (getPositionAt (e.x, e.y), e.mods.isShiftDown()); } else { /*PopupMenu m; addPopupMenuItems (m, &e); const int result = m.show(); if (result != 0) performPopupMenuAction (result); */ } }
void CodeEditorComponent::mouseDrag (const MouseEvent& e) { if (! e.mods.isPopupMenu()) moveCaretTo (getPositionAt (e.x, e.y), true); }