Mercurial > repos > tabletprog
diff modules/sdl.tp @ 283:0ec4f1b68a38
Add copyTo method to texture that allows copying to a rectangular region on the renderer rather than stretching to fit the entire renderer
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 21 Jul 2014 20:27:38 -0700 |
parents | eb83863fd33e |
children | 99c18127da04 |
line wrap: on
line diff
--- a/modules/sdl.tp Mon Jul 21 20:24:50 2014 -0700 +++ b/modules/sdl.tp Mon Jul 21 20:27:38 2014 -0700 @@ -142,6 +142,17 @@ intret } + llMessage: copyTo withVars: { + dst <- object ptr + dstOpaque <- cpointer ptr + intret <- obj_int32 ptr + } andCode: :dst { + dstOpaque <- (mcall: _rectPointer 1 dst) castTo: (cpointer ptr) + intret <- make_object: (addr_of: obj_int32_meta) NULL 0 + intret num!: (SDL_RenderCopy: renderer texture NULL (dstOpaque val)) + intret + } + llMessage: destroy withVars: {} andCode: { SDL_DestroyTexture: texture true @@ -328,6 +339,44 @@ true } + rect:size <- :x y :w h { + getter <- macro: :propName { + quote: (llMessage: propName withVars: { + intret <- obj_int32 ptr + } andCode: { + intret <- make_object: (addr_of: obj_int32_meta) NULL 0 + intret num!: ((addr_of: rect) propName) + intret + }) + } + setter <- macro: :propName { + quote: (llMessage: propName withVars: { + v <- obj_int32 ptr + } andCode: :v { + (addr_of: rect) propName: (v num) + self + }) + } + (((#{ + llProperty: rect withType: SDL_Rect + getter: x + setter: x! + getter: y + setter: y! + getter: w + setter: w! + getter: h + setter: h! + llMessage: _rectPointer withVars: { + retptr <- cpointer ptr + } andCode: { + retptr <- make_object: (addr_of: cpointer_meta) NULL 0 + retptr val!: (addr_of: (self rect)) + retptr + } + } x!: x) y!: y) w!: w) h!: h + } + llMessage: getError withVars: { str <- string ptr rawstr <- char ptr