diff options
-rw-r--r-- | fakecanvas.lua | 50 |
1 files changed, 5 insertions, 45 deletions
diff --git a/fakecanvas.lua b/fakecanvas.lua index 2b34dca..e5cb7b4 100644 --- a/fakecanvas.lua +++ b/fakecanvas.lua @@ -24,12 +24,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --]] -assert(love._version:match "^0.8", "fakecanvas requires LOVE 0.8") +assert(love._version:match "^0.9", "fakecanvas requires LOVE 0.9") assert(debug, "fake canvases require access to the debug library") local canvas_supported = love.graphics.isSupported "canvas" local npot_supported = love.graphics.isSupported "npot" -local pixeleffect_supported = love.graphics.isSupported "pixeleffect" +local shader_supported = love.graphics.isSupported "shader" local function nextpo2 (x) return 2^math.ceil(math.log(x) / math.log(2)) end local function prevpo2 (x) return 2^math.floor(math.log(x) / math.log(2)) end @@ -40,16 +40,6 @@ local canvasmt = { __index = canvas } local canvases = setmetatable({ }, { __mode = "k" }) -local options = { - -- flip fake canvas images vertically (then unflip with quad) in order to - -- match real canvas orientation. this only makes a difference inside - -- shaders, when using the canvas' texture coordinates. if you do not need - -- to use this information, you can get a performance boost by disabling - -- this option. you can enable or disable vflipping for individual fake - -- canvases by placing setOption() calls around the newCanvas() call. - vflip = true, -} - local blank function canvas:clear (...) local nargs = select("#", ...) @@ -128,11 +118,6 @@ local function Canvas (width, height) c._imagedata = love.image.newImageData(w, h) c._image = love.graphics.newImage(c._imagedata) c._quad = love.graphics.newQuad(0, 0, w, h, w, h) - c._vflip = options.vflip - - if options.vflip then - c._quad:flip(false, true) -- flip vertically part 0 - end local p = newproxy(true) @@ -158,16 +143,6 @@ local function screenshot (state) local drawn = love.graphics.newScreenshot() - if canvas._vflip then -- flip vertically (unfortunately) so it can later be drawn unflipped in order to match texcoords of real canvases. part 1 - love.graphics.setBackgroundColor(0, 0, 0, 0) - love.graphics.clear() - - local flipped = love.graphics.newImage(drawn) - love.graphics.draw(flipped, 0, canvas._imagedata:getHeight(), 0, 1, -1) - - drawn = love.graphics.newScreenshot() - end - canvas._imagedata:paste(drawn, 0, 0, 0, 0, canvas._imagedata:getWidth(), canvas._imagedata:getHeight()) canvas._image = love.graphics.newImage(canvas._imagedata) -- apparently images don't update when their imagedata changes, so @@ -229,7 +204,6 @@ local _love_funcs = { newCanvas = love.graphics.newCanvas, draw = love.graphics.draw, - drawq = love.graphics.drawq, pe_send = pixeleffect_supported and registry.PixelEffect.send, --technically sendCanvas should also be wrapped but that's not officially exposed @@ -241,17 +215,11 @@ local _wrap_funcs = { draw = function (obj, x, y, r, sx, sy, ox, oy, kx, ky) if canvases[obj] then - return _love_funcs.drawq(obj:_getImage(), obj:_getQuad(), x or 0, y or 0, r, sx, sy, ox, oy, kx, ky) -- flip texcoords part 2 + return _love_funcs.draw(obj:_getImage(), obj:_getQuad(), x or 0, y or 0, r, sx, sy, ox, oy, kx, ky) -- flip texcoords part 2 end return _love_funcs.draw(obj, x, y, r, sx, sy, ox, oy, kx, ky) end, - drawq = function (obj, q, x, y, r, sx, sy, ox, oy, kx, ky) - if canvases[obj] then - return _love_funcs.drawq(obj:_getImage(), q or obj:_getQuad(), x, y, r, sx, sy, ox, oy, kx, ky) - end - return _love_funcs.drawq(obj, q, x, y, r, sx, sy, ox, oy, kx, ky) - end, - + pe_send = function (pe, name, data) if canvases[data] then return _love_funcs.pe_send(pe, name, data:_getImage()) @@ -307,16 +275,8 @@ function M.getMaxCanvasSize (hw, hh) end end -function M.setOption (name, value) - options[name] = value -end - -function M.getOption (name) - return options[name] -end - blank = love.image.newImageData(M.getMaxCanvasSize()) M.enable() -return M
\ No newline at end of file +return M |