123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # 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()
|