Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/mergeFS18/data/gui/scripts/GUITools.lua @ 12068

Last change on this file since 12068 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
Line 
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
16function openDecisionPopup( text, callbackPtr )
17    showMenuSheet("DecisionPopup", false, true)
18    DecisionPopup.setCallback(callbackPtr)
19    DecisionPopup.setText(text)
20end
21
22function openInfoPopup(text, functionPtr, closeButton, arguments)
23    showMenuSheet("InfoPopup", false, true)
24    InfoPopup.execute(functionPtr, arguments)
25    InfoPopup.setText(text)
26    InfoPopup.setCloseButton(closeButton)
27end
28
29function getMinTextSize(window)
30    local size = {}
31
32    local lookAndFeel = CEGUI.WidgetLookManager:getSingleton():getWidgetLook(window:getLookNFeel())
33
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
41    table.insert(size, height)
42    table.insert(size, width)
43    return size
44end
45
46function getScrollingStepSize(window)
47    local height = window:getUnclippedOuterRect():get():getHeight()
48    local maxHeight = window:getRootWindow():getUnclippedOuterRect():get():getHeight()
49    local ratio = height/maxHeight
50    return 0.008*ratio/0.3204
51end
52
53function getStaticTextWindowHeight(window)
54    -- Get the area the text is formatted and drawn into.
55    local lookAndFeel = CEGUI.WidgetLookManager:getSingleton():getWidgetLook(window:getLookNFeel())
56    local formattedArea = lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window)
57    -- Calculate the pixel height of the frame by subtracting the height of the area above from the total height of the window.
58    local frameHeight = window:getUnclippedOuterRect():get():getHeight() - formattedArea:getHeight()
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
67    return height
68end
Note: See TracBrowser for help on using the repository browser.