diff options
| author | Pietro Gagliardi <[email protected]> | 2014-07-17 22:47:04 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-07-17 22:47:04 -0400 |
| commit | 29b80f7542423c74e320c847a81874f457c957e3 (patch) | |
| tree | 33a60314a9b9339e54d96b9c3c835dd9a52f83a6 /redo/sizing_windows.go | |
| parent | 2c025a97efe8f9b15af6af643126f75085e75476 (diff) | |
Migrated sizing_windows.go to C.
Diffstat (limited to 'redo/sizing_windows.go')
| -rw-r--r-- | redo/sizing_windows.go | 52 |
1 files changed, 13 insertions, 39 deletions
diff --git a/redo/sizing_windows.go b/redo/sizing_windows.go index 7455dc0..ede3101 100644 --- a/redo/sizing_windows.go +++ b/redo/sizing_windows.go @@ -6,6 +6,9 @@ import ( "fmt" ) +// #include "winapi_windows.h" +import "C" + type sizing struct { sizingbase @@ -25,23 +28,20 @@ const ( func (w *window) beginResize() (d *sizing) { d = new(sizing) - dc := getTextDC(w.hwnd) - defer releaseTextDC(w.hwnd, dc) + dc := C.getDC(w.hwnd) + defer C.releaseDC(w.hwnd, dc) - var tm s_TEXTMETRICW + var tm C.TEXTMETRICW - res, err := f_GetTextMetricsW(dc, &tm) - if res == 0 { - panic(fmt.Errorf("error getting text metrics for preferred size calculations: %v", err)) - } + C.getTextMetricsW(dc, &tm) d.baseX = int(tm.tmAveCharWidth) // TODO not optimal; third reference below has better way d.baseY = int(tm.tmHeight) if w.spaced { - d.xmargin = f_MulDiv(marginDialogUnits, d.baseX, 4) - d.ymargin = f_MulDiv(marginDialogUnits, d.baseY, 8) - d.xpadding = f_MulDiv(paddingDialogUnits, d.baseX, 4) - d.ypadding = f_MulDiv(paddingDialogUnits, d.baseY, 8) + d.xmargin = int(C.MulDiv(marginDialogUnits, d.baseX, 4)) + d.ymargin = int(C.MulDiv(marginDialogUnits, d.baseY, 8)) + d.xpadding = int(C.MulDiv(paddingDialogUnits, d.baseX, 4)) + d.ypadding = int(C.MulDiv(paddingDialogUnits, d.baseY, 8)) } return d @@ -75,14 +75,11 @@ func (w *widgetbase) commitResize(c *allocation, d *sizing) { yoff = stdDlgSizes[s.ctype].yoffalt } if yoff != 0 { - yoff = f_MulDiv(yoff, d.baseY, 8) + yoff = int(C.MulDiv(yoff, d.baseY, 8)) } c.y += yoff */ - res, err := f_MoveWindow(w.hwnd, c.x, c.y, c.width, c.height, c_TRUE) - if res == 0 { - panic(fmt.Errorf("error setting window/control rect: %v", err)) - } + C.moveWindow(w.hwnd, int(c.x), int(c.y), int(c.width), int(c.height)) } func (w *widgetbase) getAuxResizeInfo(d *sizing) { @@ -160,29 +157,6 @@ var stdDlgSizes = [nctypes]dlgunits{ } */ -func getTextDC(hwnd uintptr) (dc uintptr) { - dc, err := f_GetDC(hwnd) - if dc == hNULL { - panic(fmt.Errorf("error getting DC for preferred size calculations: %v", err)) - } -// TODO -/* - // TODO save so it can be restored later - res, err = f_SelectObject(dc, controlFont) - if res == hNULL { - panic(fmt.Errorf("error loading control font into device context for preferred size calculation: %v", err)) - } -*/ - return dc -} - -func releaseTextDC(hwnd uintptr, dc uintptr) { - res, err := f_ReleaseDC(hwnd, dc) - if res == 0 { - panic(fmt.Errorf("error releasing DC for preferred size calculations: %v", err)) - } -} - func (w *widgetbase) preferredSize(d *sizing) (width int, height int) { // TODO /* |
