AIM-PIbd-32-Kurbanova-A-A/aimenv/Lib/site-packages/pythonwin/pywin/Demos/dibdemo.py
2024-10-02 22:15:59 +04:00

74 lines
2.2 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 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()