test alignment
This commit is contained in:
170
examples/ThemeColorAccessDemo.lua
Normal file
170
examples/ThemeColorAccessDemo.lua
Normal file
@@ -0,0 +1,170 @@
|
||||
-- Theme Color Access Demo
|
||||
-- Demonstrates various ways to access and use theme colors
|
||||
|
||||
package.path = package.path .. ";./?.lua;../?.lua"
|
||||
|
||||
local FlexLove = require("FlexLove")
|
||||
local Theme = FlexLove.Theme
|
||||
local Gui = FlexLove.Gui
|
||||
local Color = FlexLove.Color
|
||||
|
||||
-- Initialize love stubs for testing
|
||||
love = {
|
||||
graphics = {
|
||||
newFont = function(size) return { getHeight = function() return size end } end,
|
||||
getFont = function() return { getHeight = function() return 12 end } end,
|
||||
getWidth = function() return 1920 end,
|
||||
getHeight = function() return 1080 end,
|
||||
newImage = function() return {} end,
|
||||
newQuad = function() return {} end,
|
||||
},
|
||||
}
|
||||
|
||||
print("=== Theme Color Access Demo ===\n")
|
||||
|
||||
-- Load and activate the space theme
|
||||
Theme.load("space")
|
||||
Theme.setActive("space")
|
||||
|
||||
print("1. Basic Color Access")
|
||||
print("---------------------")
|
||||
|
||||
-- Method 1: Using Theme.getColor() (Recommended)
|
||||
local primaryColor = Theme.getColor("primary")
|
||||
local secondaryColor = Theme.getColor("secondary")
|
||||
local textColor = Theme.getColor("text")
|
||||
local textDarkColor = Theme.getColor("textDark")
|
||||
|
||||
print(string.format("Primary: r=%.2f, g=%.2f, b=%.2f", primaryColor.r, primaryColor.g, primaryColor.b))
|
||||
print(string.format("Secondary: r=%.2f, g=%.2f, b=%.2f", secondaryColor.r, secondaryColor.g, secondaryColor.b))
|
||||
print(string.format("Text: r=%.2f, g=%.2f, b=%.2f", textColor.r, textColor.g, textColor.b))
|
||||
print(string.format("Text Dark: r=%.2f, g=%.2f, b=%.2f", textDarkColor.r, textDarkColor.g, textDarkColor.b))
|
||||
|
||||
print("\n2. Get All Available Colors")
|
||||
print("----------------------------")
|
||||
|
||||
-- Method 2: Get all color names
|
||||
local colorNames = Theme.getColorNames()
|
||||
if colorNames then
|
||||
print("Available colors in theme:")
|
||||
for _, name in ipairs(colorNames) do
|
||||
print(" - " .. name)
|
||||
end
|
||||
end
|
||||
|
||||
print("\n3. Get All Colors at Once")
|
||||
print("-------------------------")
|
||||
|
||||
-- Method 3: Get all colors as a table
|
||||
local allColors = Theme.getAllColors()
|
||||
if allColors then
|
||||
print("All colors:")
|
||||
for name, color in pairs(allColors) do
|
||||
print(string.format(" %s: r=%.2f, g=%.2f, b=%.2f, a=%.2f", name, color.r, color.g, color.b, color.a))
|
||||
end
|
||||
end
|
||||
|
||||
print("\n4. Safe Color Access with Fallback")
|
||||
print("-----------------------------------")
|
||||
|
||||
-- Method 4: Get color with fallback
|
||||
local accentColor = Theme.getColorOrDefault("accent", Color.new(1, 0, 0, 1)) -- Falls back to red
|
||||
local primaryColor2 = Theme.getColorOrDefault("primary", Color.new(1, 0, 0, 1)) -- Uses theme color
|
||||
|
||||
print(string.format("Accent (fallback): r=%.2f, g=%.2f, b=%.2f", accentColor.r, accentColor.g, accentColor.b))
|
||||
print(string.format("Primary (theme): r=%.2f, g=%.2f, b=%.2f", primaryColor2.r, primaryColor2.g, primaryColor2.b))
|
||||
|
||||
print("\n5. Using Colors in GUI Elements")
|
||||
print("--------------------------------")
|
||||
|
||||
-- Create a container with theme colors
|
||||
local container = Gui.new({
|
||||
width = 400,
|
||||
height = 300,
|
||||
backgroundColor = Theme.getColor("secondary"),
|
||||
positioning = FlexLove.enums.Positioning.FLEX,
|
||||
flexDirection = FlexLove.enums.FlexDirection.VERTICAL,
|
||||
gap = 10,
|
||||
padding = { top = 20, right = 20, bottom = 20, left = 20 },
|
||||
})
|
||||
|
||||
-- Create a button with primary color
|
||||
local button = Gui.new({
|
||||
parent = container,
|
||||
width = 360,
|
||||
height = 50,
|
||||
backgroundColor = Theme.getColor("primary"),
|
||||
textColor = Theme.getColor("text"),
|
||||
text = "Click Me!",
|
||||
textSize = 18,
|
||||
})
|
||||
|
||||
-- Create a text label with dark text
|
||||
local label = Gui.new({
|
||||
parent = container,
|
||||
width = 360,
|
||||
height = 30,
|
||||
backgroundColor = Theme.getColorOrDefault("background", Color.new(0.2, 0.2, 0.2, 1)),
|
||||
textColor = Theme.getColor("textDark"),
|
||||
text = "This is a label with dark text",
|
||||
textSize = 14,
|
||||
})
|
||||
|
||||
print("Created GUI elements with theme colors:")
|
||||
print(string.format(" Container: %d children", #container.children))
|
||||
print(string.format(" Button background: r=%.2f, g=%.2f, b=%.2f", button.backgroundColor.r, button.backgroundColor.g, button.backgroundColor.b))
|
||||
print(string.format(" Label text color: r=%.2f, g=%.2f, b=%.2f", label.textColor.r, label.textColor.g, label.textColor.b))
|
||||
|
||||
print("\n6. Creating Color Variations")
|
||||
print("-----------------------------")
|
||||
|
||||
-- Create variations of theme colors
|
||||
local primaryDark = Color.new(
|
||||
primaryColor.r * 0.7,
|
||||
primaryColor.g * 0.7,
|
||||
primaryColor.b * 0.7,
|
||||
primaryColor.a
|
||||
)
|
||||
|
||||
local primaryLight = Color.new(
|
||||
math.min(1, primaryColor.r * 1.3),
|
||||
math.min(1, primaryColor.g * 1.3),
|
||||
math.min(1, primaryColor.b * 1.3),
|
||||
primaryColor.a
|
||||
)
|
||||
|
||||
local primaryTransparent = Color.new(
|
||||
primaryColor.r,
|
||||
primaryColor.g,
|
||||
primaryColor.b,
|
||||
0.5
|
||||
)
|
||||
|
||||
print(string.format("Primary (original): r=%.2f, g=%.2f, b=%.2f, a=%.2f", primaryColor.r, primaryColor.g, primaryColor.b, primaryColor.a))
|
||||
print(string.format("Primary (dark): r=%.2f, g=%.2f, b=%.2f, a=%.2f", primaryDark.r, primaryDark.g, primaryDark.b, primaryDark.a))
|
||||
print(string.format("Primary (light): r=%.2f, g=%.2f, b=%.2f, a=%.2f", primaryLight.r, primaryLight.g, primaryLight.b, primaryLight.a))
|
||||
print(string.format("Primary (50%% alpha): r=%.2f, g=%.2f, b=%.2f, a=%.2f", primaryTransparent.r, primaryTransparent.g, primaryTransparent.b, primaryTransparent.a))
|
||||
|
||||
print("\n7. Quick Reference")
|
||||
print("------------------")
|
||||
print([[
|
||||
// Basic usage:
|
||||
local color = Theme.getColor("primary")
|
||||
|
||||
// With fallback:
|
||||
local color = Theme.getColorOrDefault("accent", Color.new(1, 0, 0, 1))
|
||||
|
||||
// Get all colors:
|
||||
local colors = Theme.getAllColors()
|
||||
|
||||
// Get color names:
|
||||
local names = Theme.getColorNames()
|
||||
|
||||
// Use in elements:
|
||||
local button = Gui.new({
|
||||
backgroundColor = Theme.getColor("primary"),
|
||||
textColor = Theme.getColor("text"),
|
||||
})
|
||||
]])
|
||||
|
||||
print("\n=== Demo Complete ===")
|
||||
Reference in New Issue
Block a user