Files
love-android/jni/devil-1.7.8/projects/powerbasic/imgview.bas
T

169 lines
3.7 KiB
VB.net

'-----------------------------------------------------------------------------
' Minimal Image viewer using DevIL
' DevIL Sample program using Powerbasic.
'
' by Peter Scheutz, Scheutz & Clementsen Design
' Web: http://www.scheutz.dk
' e-mail: sourcecode@scheutz.dk
'
' Last modified: 06/22/2002
' Based on DevIL Ver. 1.6.1 PB incs
' Filename: imgview.bas
'
' Released under the GNU Lesser General Public License:
' http://www.gnu.org/copyleft/lesser.html
'
' For information on use and download of DevIL goto: http://openil.sourceforge.net/
' (Get docs and "End User Package")
'
' Report errors in the Powerbasic includes to e-mail above.
'
' For general help on Powerbasic and DevIL, try the forums at:
' http://www.powerbasic.com
'-----------------------------------------------------------------------------
#Register None
#Compile Exe "imgview.exe"
Option Explicit
#Include "win32api.inc"
#Include "il.inc"
#Include "ilu.inc"
#Include "ilut.inc"
Global hDCBmp As Long
Global pic As BITMAP
CallBack Function mainCallback()
Local ps As PAINTSTRUCT
Local hDC As Long
Select Case CbMsg
Case %WM_PAINT
hDC = BeginPaint( CbHndl, ps )
If hDCBmp<>0 Then
BitBlt hDC, 0, 0, pic.bmWidth, pic.bmHeight , hDCBmp, 0, 0, %SRCCOPY
End If
Call EndPaint( CbHndl, ps )
End Select
End Function
Sub SetWindowClientSize (ByVal hWnd As Long,ByVal PixX As Long,ByVal PixY As Long)
' set window by client size in pixels
' centers window and clips to screen
Local cRect As RECT
Local diffX As Long
Local diffY As Long
GetWindowRect hWnd,cRect
diffX=cRect.nRight-cRect.nLeft
diffY=cRect.nBottom-cRect.nTop
GetClientRect hWnd,cRect
diffX=diffX-(cRect.nRight-cRect.nLeft)
diffY=diffY-(cRect.nBottom-cRect.nTop)
PixX=PixX+diffX
PixY=PixY+diffY
If PixX> GetSystemMetrics(%SM_CXSCREEN) Then PixX = GetSystemMetrics(%SM_CXSCREEN)
If PixY> GetSystemMetrics(%SM_CYSCREEN) Then PixY = GetSystemMetrics(%SM_CYSCREEN)
SetWindowPos hWnd, 0, (GetSystemMetrics(%SM_CXSCREEN) - PixX) / 2, _
(GetSystemMetrics(%SM_CYSCREEN) - PixY) / 2, PixX, PixY, 0
End Sub
Function PbMain() As Long
Local ILErr As Dword
Local hBmp As Long
Local hWnd As Long
Local hDC As Long
Local hBmpOld As Long
Local errString As Asciiz*1024
If Len(Command$)=0 Then
MsgBox "Usage: imgview.exe filename"
Exit Function
End If
ilInit
ilEnable %IL_FORMAT_SET
ilEnable %IL_ORIGIN_SET
ilEnable %IL_TYPE_SET
ilFormatFunc %IL_RGB
ilOriginFunc %IL_ORIGIN_LOWER_LEFT
ilTypeFunc %IL_UNSIGNED_BYTE
ilEnable %IL_CONV_PAL
Do
ILErr = ilGetError()
If ILErr <>0 Then
errString = iluErrorString(ILErr)
MsgBox "Error in Set or enable:" & $CRLF & errString
End If
Loop While (ILErr <> 0)
Dialog New 0, "DevIL Mini imageviewer in PB " & Command$, , , 100, 100 , %WS_SYSMENU Or %WS_CAPTION To hWnd
hDC = getDC (hWnd)
If hDC<>0 Then
hBmp = ilutWinLoadImage (Command$,getDC (hWnd) )
ILErr=ilGetError()
If ILErr<>0 Then
errString = iluErrorString(ILErr)
MsgBox "Error in ilutWinLoadImage:" & $CRLF & errString
Exit Function
Else
GetObject hBmp, SizeOf( pic ), pic
SetWindowClientSize hWnd ,pic.bmWidth, pic.bmHeight
hDCBmp = CreateCompatibleDC( hDC )
hBmpOld = SelectObject( hDCBmp, hBmp )
Dialog Show Modal hWnd Call mainCallback
End If
End If
If hBmp < > 0 Then
SelectObject hDCBmp, hBmpOld
DeleteObject hBmp
hBmp = 0
End If
End Function