XBR code using libxbr.dll

Post your FreeBASIC source, examples, tips and tricks here. Please don’t post code without including an explanation.
Post Reply
lassar
Posts: 306
Joined: Jan 17, 2006 1:35

XBR code using libxbr.dll

Post by lassar »

Source code to use xbr2x in libxbr.dll pixel art scaler.

Code: Select all


'****************************************************************************
'                                   By Randall Glass
'
'                 I donate this code to the public domain
'
'*****************************************************************************

#LANG "fblite"

#include once "fbgfx.bi"
DEFINT A-Z


Declare function dylibsymbol ( byval libhandle as integer, symbol as string ) as any ptr


DIM DllPTR AS ANY PTR


type xbr_params
    xbrinput AS UBYTE PTR
    xbroutput AS UBYTE PTR
    inWidth AS INTEGER
    inHeight AS INTEGER
    inPitch AS INTEGER
    outPitch AS INTEGER
    xbrdata AS ANY PTR
end type


DIM SHARED XbrParm AS xbr_params 

'$static
DIM SHARED rgbtoyuv(16777216) as Ulong
'$Dynamic


DIM SHARED XbrParmPtr AS ANY PTR

XbrParm.xbrdata = @rgbtoyuv(0)
XbrParmPtr = @XbrParm


DIM SHARED xbr_init_data As SUB stdcall(BYVAL MyXbrData AS ANY PTR)

DIM SHARED xbr_filter_xbr2x As SUB stdcall(BYVAL MyXbrParms AS ANY PTR)
DIM SHARED xbr_filter_xbr3x As SUB stdcall(BYVAL MyXbrParms AS ANY PTR)
DIM SHARED xbr_filter_xbr4x As SUB stdcall(BYVAL MyXbrParms AS ANY PTR)

DIM SHARED xbr_filter_hq2x SUB stdcall(BYVAL MyXbrParms AS ANY PTR)
DIM SHARED xbr_filter_hq3x SUB stdcall(BYVAL MyXbrParms AS ANY PTR)
DIM SHARED xbr_filter_hq4x SUB stdcall(BYVAL MyXbrParms AS ANY PTR)


DllPTR = DyLibLoad("libxbr.dll")
If DllPTR = 0 Then
  Print "Unable to load libxbr.dll"
  SLEEP
  END
END IF


xbr_init_data = DyLibSymbol ( DllPTR, "xbr_init_data" )
xbr_filter_xbr2x = DyLibSymbol ( DllPTR, "xbr_filter_xbr2x" )

xbr_init_data(XbrParm.xbrdata)


dim shared ScrPtr as any ptr

ScreenRes(1280, 960, 32,, 1)  ' full screen mode

Dim IMG AS ANY PTR 

IMG = ImageCreate(640, 480,,32)

BLOAD "Radtutor.bmp", IMG

result% = ImageInfo( IMG,,,,, ScrPtr)

XbrParm.xbrinput = ScrPtr
XbrParm.xbroutput = Screenptr
XbrParm.inWidth = 640
XbrParm.inHeight = 480
XbrParm.inPitch = 2560
XbrParm.outPitch = 5120

cls 
SCREENLOCK
xbr_filter_xbr2x( XbrParmPtr)
SCREENUNLOCK
sleep
END

Post Reply