This is an REFramework plugin that adds a Direct2D scripting API.
Currently suggest building in RelWithDebInfo so that when issues arise you can debug and fix them.
git clone https://github.com/cursey/reframework-d2d.git
cd reframework-d2d
cmake -B build
cmake --build build --config RelWithDebInfo
local font = nil
local image = nil
d2d.register(function()
font = d2d.Font.new("Tahoma", 50)
image = d2d.Image.new("test.png") -- Loads <gamedir>/reframework/images/test.png
end,
function()
d2d.text(font, "Hello World!", 0, 0, 0xFFFFFFFF)
d2d.text(font, "你好世界!", 0, 50, 0xFFFF0000) -- chinese
d2d.text(font, "こんにちは世界!", 0, 100, 0xFF00FF00) -- japanese
d2d.text(font, "안녕하세요, 세계입니다!", 0, 150, 0xFF0000FF) -- korean
d2d.text(font, "Привет мир!", 0, 200, 0xFFFF00FF) -- russian
d2d.text(font, "😁💕😒😘🤣😂😊🤔🥴👈👉🤦♀️", 0, 250, 0xFFFFFF00) -- emoji
local str = "This is only a test"
local w, h = font:measure(str)
d2d.fill_rect(500, 100, w, h, 0xFFFFFFFF)
d2d.text(font, str, 500, 100, 0xFF000000)
d2d.outline_rect(500, 100, w, h, 5, 0xFF00FFFF)
local screen_w, screen_h = d2d.surface_size()
local img_w, img_h = image:size()
-- Draw image at the bottom right corner of the screen in its default size.
d2d.image(image, screen_w - img_w, screen_h - img_h)
-- Draw image at the bottom left corner of the screen but scaled to 50x50.
d2d.image(image, 0, screen_h - 50, 50, 50)
end)
Registers your script with d2d allowing you to create d2d resources and draw using them.
init_fn
a function that gets called when your script should create d2d resources (such as fonts viad2d.create_font
)draw_fn
a function that gets called when your script should draw using d2d and the d2d resources you've created in yourinit_fn
This function has been deprecated in favor of d2d.Font.new(...)
Creates a font resource.
name
the font family namesize
the size of the created fontbold
an optional boolean value to make the font bolditalic
and optional boolean value to make the font italic
You must call this function from the init_fn
passed to d2d.register
. That's the only valid place to call it.
Draws text on the screen at the position you supply using a font resource you've created.
font
the font resource you've created in yourinit_fn
viad2d.Font.new(...)
text
the text to drawx
the horizontal position on the screeny
the vertical position on the screencolor
the ARGB color of the text
This function has been deprecated in favor of d2d.Font:measure(...)
Returns the width and height of the rendered text
font
the font resource you've created in yourinit_fn
viad2d.Font.new(...)
text
the text to measure
Draws a filled in rectangle
x
the horizontal position on the screeny
the vertical position on the screenw
the width of the rectangleh
the height of the rectanglecolor
the ARGB color of the rectangle
Draws the outline of a rectangle
x
the horizontal position on the screeny
the vertical position on the screenw
the width of the rectangleh
the height of the rectanglethickness
the thickness of the outlinecolor
the ARGB color of the rectangle
Draws a line between two points
x1
the first horizontal position on the screeny1
the first vertical position on the screenx2
the second horizontal position on the screeny2
the second vertical position on the screenthickness
the thickness of the linecolor
the ARGB color of the rectangle
Draws an image at the specified position, optionally scaled.
image
the image resource loaded in yourinit_fn
viad2d.Image.new(...)
x
the horizontal position on the screeny
the vertical position on the screenw
the optional width to scale the image byh
the optional height to scale the image by
If the w
and h
parameters are omitted, the image will be drawn at its natural size.
Returns the width and height of the drawable surface. This is essentially the screen or window size of the game.
Represents a d2d font resource.
Creates a font resource.
name
the font family namesize
the size of the created fontbold
an optional boolean value to make the font bolditalic
and optional boolean value to make the font italic
You must call this function from the init_fn
passed to d2d.register
. That's the only valid place to call it.
Returns the width and height of the rendered text.
text
the text to measure
Represents a d2d image resource.
Loads an image resource from <gamedir>\reframework\images\<filepath>
.
filepath
A file path for the image to load
Returns the width and height of the image in pixels.