Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/data/gui/scripts/GUITools.lua @ 12141

Last change on this file since 12141 was 11809, checked in by landauf, 7 years ago

added work around for a bug in cegui 0.8 (the cegui lua scripts expect a "Font*" pointer to call getTextExtent(), but cegui 0.8 only returns "const Font*")

  • Property svn:eol-style set to native
File size: 3.0 KB
RevLine 
[6746]1-- Returns a new menu sheet
2-- See MenuSheet.new for details about the parameters
3function createMenuSheet(name, bHidePrevious, tShowCursor, tUseKeyboard, bBlockJoyStick)
4    local sheet = require("MenuSheet").new(name, bHidePrevious, tShowCursor, tUseKeyboard, bBlockJoyStick)
5    _G[sheet.name] = sheet -- Global access required because of the event handlers
6    return sheet
7end
8
9-- Returns a new HUD sheet
10function createHUDSheet(name)
11    local sheet = require("HUDSheet").new(name)
12    _G[sheet.name] = sheet -- Global access required because of the event handlers
13    return sheet
14end
15
[6145]16function openDecisionPopup( text, callbackPtr )
[6746]17    showMenuSheet("DecisionPopup", false, true)
[6266]18    DecisionPopup.setCallback(callbackPtr)
[6145]19    DecisionPopup.setText(text)
[6266]20end
21
[6311]22function openInfoPopup(text, functionPtr, closeButton, arguments)
[6746]23    showMenuSheet("InfoPopup", false, true)
[6311]24    InfoPopup.execute(functionPtr, arguments)
[6266]25    InfoPopup.setText(text)
[6283]26    InfoPopup.setCloseButton(closeButton)
[6266]27end
[6355]28
29function getMinTextSize(window)
30    local size = {}
[6387]31
[6355]32    local lookAndFeel = CEGUI.WidgetLookManager:getSingleton():getWidgetLook(window:getLookNFeel())
[6387]33
[11809]34    local lineSpacing = window:getFont():getLineSpacing()
35    --local textExtent = window:getFont():getTextExtent(window:getText())
36    local textExtent = orxonox.GUIManager:getFontTextExtent(window:getFont(), window:getText()) -- workaround for bug in cegui lua scripts
37   
38    local height = lineSpacing + window:getUnclippedOuterRect():get():getHeight() - lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window):getHeight()
39    local width  = textExtent  + window:getUnclippedOuterRect():get():getWidth()  - lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window):getWidth()
40
[6355]41    table.insert(size, height)
42    table.insert(size, width)
43    return size
44end
45
46function getScrollingStepSize(window)
[11799]47    local height = window:getUnclippedOuterRect():get():getHeight()
48    local maxHeight = window:getRootWindow():getUnclippedOuterRect():get():getHeight()
[6355]49    local ratio = height/maxHeight
50    return 0.008*ratio/0.3204
51end
[7163]52
53function getStaticTextWindowHeight(window)
[8351]54    -- Get the area the text is formatted and drawn into.
[7163]55    local lookAndFeel = CEGUI.WidgetLookManager:getSingleton():getWidgetLook(window:getLookNFeel())
56    local formattedArea = lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window)
[8351]57    -- Calculate the pixel height of the frame by subtracting the height of the area above from the total height of the window.
[11797]58    local frameHeight = window:getUnclippedOuterRect():get():getHeight() - formattedArea:getHeight()
[8351]59
60    local height = 0
61    if ORXONOX_OLD_CEGUI then
62        local lines = window:getFont():getFormattedLineCount(window:getText(), formattedArea, CEGUI.WordWrapLeftAligned)
63        height = lines * window:getFont():getLineSpacing() + frameHeight
64    else
65        height = math.floor(CEGUI.PropertyHelper:stringToFloat(window:getProperty("VertExtent")) + frameHeight) + 1
66    end
[7163]67    return height
68end
Note: See TracBrowser for help on using the repository browser.