69 lines
No EOL
1.9 KiB
Python
69 lines
No EOL
1.9 KiB
Python
# A demo which creates a view and a frame which displays a PPM format bitmap
|
|
#
|
|
# This hasnnt been run in a while, as I dont have many of that format around!
|
|
import win32ui
|
|
import win32con
|
|
import win32api
|
|
import string
|
|
|
|
class DIBView:
|
|
def __init__(self, doc, dib):
|
|
self.dib = dib
|
|
self.view = win32ui.CreateView(doc)
|
|
self.width = self.height = 0
|
|
# set up message handlers
|
|
# self.view.OnPrepareDC = self.OnPrepareDC
|
|
self.view.HookMessage (self.OnSize, win32con.WM_SIZE)
|
|
|
|
def OnSize (self, params):
|
|
lParam = params[3]
|
|
self.width = win32api.LOWORD(lParam)
|
|
self.height = win32api.HIWORD(lParam)
|
|
|
|
def OnDraw (self, ob, dc):
|
|
# set sizes used for "non strecth" mode.
|
|
self.view.SetScrollSizes(win32con.MM_TEXT, self.dib.GetSize())
|
|
dibSize = self.dib.GetSize()
|
|
dibRect = (0,0,dibSize[0], dibSize[1])
|
|
# stretch BMP.
|
|
#self.dib.Paint(dc, (0,0,self.width, self.height),dibRect)
|
|
# non stretch.
|
|
self.dib.Paint(dc)
|
|
|
|
class DIBDemo:
|
|
def __init__(self, filename, * bPBM):
|
|
# init data members
|
|
f = open(filename, 'rb')
|
|
dib=win32ui.CreateDIBitmap()
|
|
if len(bPBM)>0:
|
|
magic=f.readline()
|
|
if magic != "P6\n":
|
|
print("The file is not a PBM format file")
|
|
raise ValueError("Failed - The file is not a PBM format file")
|
|
# check magic?
|
|
rowcollist=f.readline().split()
|
|
cols=int(rowcollist[0])
|
|
rows=int(rowcollist[1])
|
|
f.readline() # whats this one?
|
|
dib.LoadPBMData(f,(cols,rows))
|
|
else:
|
|
dib.LoadWindowsFormatFile(f)
|
|
f.close()
|
|
# create doc/view
|
|
self.doc = win32ui.CreateDoc()
|
|
self.dibView = DIBView( self.doc, dib )
|
|
self.frame = win32ui.CreateMDIFrame()
|
|
self.frame.LoadFrame() # this will force OnCreateClient
|
|
self.doc.SetTitle ('DIB Demo')
|
|
self.frame.ShowWindow()
|
|
|
|
# display the sucka
|
|
self.frame.ActivateFrame()
|
|
|
|
def OnCreateClient( self, createparams, context ):
|
|
self.dibView.view.CreateWindow(self.frame)
|
|
return 1
|
|
|
|
if __name__=='__main__':
|
|
import demoutils
|
|
demoutils.NotAScript() |