12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # 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 win32api
- import win32con
- import win32ui
-
-
- 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()
|