//--------------------------------------------------------------------------------------- void TopLevelCaretPositioner::layout_caret(Caret* pCaret, DocCursor* pCursor) { m_pCursor = pCursor; m_state = m_pCursor->get_state(); ImoId id = m_state.get_parent_level_id(); GmoBox* pBox = m_pGModel->get_box_for_imo(id); URect pos; if (pBox) pos = pBox->get_bounds(); else { //at end of document pBox = get_box_for_last_element(); if (pBox) { pos.set_top_left( UPoint(pBox->get_left(), pBox->get_bottom()) ); pos.set_height(1000.0f); pos.set_width(1000.0f); } else { //empty document pos = URect(0.0f, 0.0f, 1000.0f, 1000.0f); } } pCaret->set_type(Caret::k_top_level); pCaret->set_top_level_box(pos); pCaret->set_position( pos.get_top_left() ); pCaret->set_size( USize(pos.get_width(), pos.get_height()) ); }
//--------------------------------------------------------------------------------------- URect RightAligner::get_box(int iBox) { if (int(m_boxes.size()) > iBox) { std::list<URect>::iterator it = m_boxes.begin(); std::advance(it, iBox); return *it; } else return URect(); }
//--------------------------------------------------------------------------------------- URect ScoreCaretPositioner::get_bounds_for_imo(ImoId id, int iStaff) { GmoShape* pShape = get_shape_for_imo(id, iStaff); if (!pShape) { LOMSE_LOG_ERROR("[ScoreCaretPositioner::get_bounds_for_imo] No shape for requested object!"); return URect(0,0,0,0); } GmoBoxSliceInstr* pBSI = static_cast<GmoBoxSliceInstr*>( pShape->get_owner_box() ); GmoBoxSlice* pBS = static_cast<GmoBoxSlice*>( pBSI->get_parent_box() ); m_pBoxSystem = static_cast<GmoBoxSystem*>( pBS->get_parent_box() ); return pShape->get_bounds(); }
//--------------------------------------------------------------------------------------- void ScoreCaretPositioner::caret_at_start_of_score(Caret* pCaret) { //Cursor is at end of score but score is empty. //Place cursor at start of first system //get shape for first system DocCursorState state = m_pDocCursor->get_state(); ImoId scoreId = state.get_parent_level_id(); //GmoShapeStaff* pShape = m_pGModel->get_shape_for_first_staff_in_first_system(scoreId); GmoBoxScorePage* pBSP = static_cast<GmoBoxScorePage*>( m_pGModel->get_box_for_imo(scoreId) ); m_pBoxSystem = dynamic_cast<GmoBoxSystem*>(pBSP->get_child_box(0)); GmoShapeStaff* pShape = (m_pBoxSystem ? m_pBoxSystem->get_staff_shape(0) : NULL); URect bounds; if (pShape) { bounds = pShape->get_bounds(); bounds.x += m_pMeter->tenths_to_logical(20, 0, 0); } else { //score totally empty. No staff displayed! Position cursors at start of page //TODO bounds = URect(0.0f, 0.0f, 20.0f, 700.0f); // uPos.y = pBPage->GetYTop(); // uPos.x = pBPage->GetXLeft() + pScore->tenths_to_logical(20); } set_caret_y_pos_and_height(&bounds, k_no_imoid, 0); pCaret->set_type(Caret::k_line); pCaret->set_position( bounds.get_top_left() ); pCaret->set_size( USize(bounds.get_width(), bounds.get_height()) ); set_caret_timecode(pCaret); }
//--------------------------------------------------------------------------------------- URect HandlerCircle::get_bounds() { LUnits diameter = m_radius + m_radius; return URect(m_origin, USize(diameter, diameter)); }
//----------------------------------------------------------------------------// void Element::addElementProperties() { const String propertyOrigin("Element"); CEGUI_DEFINE_PROPERTY(Element, URect, "Area", "Property to get/set the unified area rectangle. Value is a \"URect\".", &Element::setArea, &Element::getArea, URect(UDim(0, 0), UDim(0, 0), UDim(0, 0), UDim(0, 0)) ); CEGUI_DEFINE_PROPERTY_NO_XML(Element, UVector2, "Position", "Property to get/set the unified position. Value is a \"UVector2\".", &Element::setPosition, &Element::getPosition, UVector2(UDim(0, 0), UDim(0, 0)) ); CEGUI_DEFINE_PROPERTY(Element, VerticalAlignment, "VerticalAlignment", "Property to get/set the vertical alignment. Value is one of \"Top\", \"Centre\" or \"Bottom\".", &Element::setVerticalAlignment, &Element::getVerticalAlignment, VA_TOP ); CEGUI_DEFINE_PROPERTY(Element, HorizontalAlignment, "HorizontalAlignment", "Property to get/set the horizontal alignment. Value is one of \"Left\", \"Centre\" or \"Right\".", &Element::setHorizontalAlignment, &Element::getHorizontalAlignment, HA_LEFT ); CEGUI_DEFINE_PROPERTY_NO_XML(Element, USize, "Size", "Property to get/set the unified size. Value is a \"USize\".", &Element::setSize, &Element::getSize, USize(UDim(0, 0), UDim(0, 0)) ); CEGUI_DEFINE_PROPERTY(Element, USize, "MinSize", "Property to get/set the unified minimum size. Value is a \"USize\".", &Element::setMinSize, &Element::getMinSize, USize(UDim(0, 0), UDim(0, 0)) ); CEGUI_DEFINE_PROPERTY(Element, USize, "MaxSize", "Property to get/set the unified maximum size. Value is a \"USize\". " "Note that zero means no maximum size.", &Element::setMaxSize, &Element::getMaxSize, USize(UDim(0, 0), UDim(0, 0)) ); CEGUI_DEFINE_PROPERTY(Element, AspectMode, "AspectMode", "Property to get/set the 'aspect mode' setting. Value is either \"Ignore\", \"Shrink\" or \"Expand\".", &Element::setAspectMode, &Element::getAspectMode, AM_IGNORE ); CEGUI_DEFINE_PROPERTY(Element, float, "AspectRatio", "Property to get/set the aspect ratio. Only applies when aspect mode is not \"Ignore\".", &Element::setAspectRatio, &Element::getAspectRatio, 1.0 / 1.0 ); CEGUI_DEFINE_PROPERTY(Element, bool, "PixelAligned", "Property to get/set whether the Element's size and position should be pixel aligned. " "Value is either \"True\" or \"False\".", &Element::setPixelAligned, &Element::isPixelAligned, true ); CEGUI_DEFINE_PROPERTY(Element, Quaternion, "Rotation", "Property to get/set the Element's rotation. Value is a quaternion: " "\"w:[w_float] x:[x_float] y:[y_float] z:[z_float]\"" "or \"x:[x_float] y:[y_float] z:[z_float]\" to convert from Euler angles (in degrees).", &Element::setRotation, &Element::getRotation, Quaternion(1.0,0.0,0.0,0.0) ); CEGUI_DEFINE_PROPERTY(Element, bool, "NonClient", "Property to get/set whether the Element is 'non-client'. " "Value is either \"True\" or \"False\".", &Element::setNonClient, &Element::isNonClient, false ); }
//--------------------------------------------------------------------------------------- URect GmoObj::get_bounds() { return URect(m_origin.x, m_origin.y, m_size.width, m_size.height); }