- Timestamp:
- Jul 29, 2006, 6:43:07 AM (19 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/synergy/lib/platform/CPMClipboardBitmapConverter.cpp
r2751 r2752 2 2 * synergy -- mouse and keyboard sharing utility 3 3 * Copyright (C) 2004 Chris Schoeneman 4 * Copyright (C) 2006 Knut St. Osmundsen 4 5 * 5 6 * This package is free software; you can redistribute it and/or … … 13 14 */ 14 15 15 #include "C MSWindowsClipboardBitmapConverter.h"16 #include "CPMClipboardBitmapConverter.h" 16 17 #include "CLog.h" 17 18 18 19 // 19 // C MSWindowsClipboardBitmapConverter20 // CPMClipboardBitmapConverter 20 21 // 21 22 22 C MSWindowsClipboardBitmapConverter::CMSWindowsClipboardBitmapConverter()23 CPMClipboardBitmapConverter::CPMClipboardBitmapConverter() 23 24 { 24 25 // do nothing 25 26 } 26 27 27 C MSWindowsClipboardBitmapConverter::~CMSWindowsClipboardBitmapConverter()28 CPMClipboardBitmapConverter::~CPMClipboardBitmapConverter() 28 29 { 29 30 // do nothing … … 31 32 32 33 IClipboard::EFormat 33 C MSWindowsClipboardBitmapConverter::getFormat() const34 CPMClipboardBitmapConverter::getFormat() const 34 35 { 35 36 return IClipboard::kBitmap; 36 37 } 37 38 38 U INT39 C MSWindowsClipboardBitmapConverter::getWin32Format() const39 ULONG 40 CPMClipboardBitmapConverter::getPMFormat() const 40 41 { 41 return CF_ DIB;42 return CF_BITMAP; 42 43 } 43 44 44 HANDLE 45 C MSWindowsClipboardBitmapConverter::fromIClipboard(const CString& data) const45 ULONG 46 CPMClipboardBitmapConverter::getPMFormatInfo() const 46 47 { 47 // copy to memory handle 48 HGLOBAL gData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, data.size()); 49 if (gData != NULL) { 50 // get a pointer to the allocated memory 51 char* dst = (char*)GlobalLock(gData); 52 if (dst != NULL) { 53 memcpy(dst, data.data(), data.size()); 54 GlobalUnlock(gData); 55 } 56 else { 57 GlobalFree(gData); 58 gData = NULL; 59 } 60 } 48 return CFI_HANDLE; 49 } 61 50 62 return gData; 51 ULONG 52 CPMClipboardBitmapConverter::fromIClipboard(const CString& data) const 53 { 54 /* 55 * We're getting a windows DIB, create a PM bitmap from that. 56 */ 57 /** @todo implement me */ 58 return 0; 63 59 } 64 60 65 61 CString 66 C MSWindowsClipboardBitmapConverter::toIClipboard(HANDLEdata) const62 CPMClipboardBitmapConverter::toIClipboard(ULONG data) const 67 63 { 64 #if 1 65 /** @todo implement me */ 66 return CString(); 67 #else 68 HBITMAP hbmp = (HBITMAP)data; 69 70 BITMAPINFOHEADER2 BmpHdr; 71 72 ULONG cbFix; 73 ULONG cx; 74 ULONG cy; 75 USHORT cPlanes; 76 USHORT cBitCount; 77 ULONG ulCompression; 78 ULONG cbImage; 79 ULONG cxResolution; 80 ULONG cyResolution; 81 ULONG cclrUsed; 82 ULONG cclrImportant; 83 USHORT usUnits; 84 USHORT usReserved; 85 USHORT usRecording; 86 USHORT usRendering; 87 ULONG cSize1; 88 ULONG cSize2; 89 ULONG ulColorEncoding; 90 ULONG ulIdentifier; 91 92 if (GpiQueryBitmapInfoHeader(hbmp, &BmpHdr)) { 93 LOG((CLOG_INFO "bitmap: %dx%d %d", bmpData.biWidth, bitmap->bmiHeader.biHeight, (int)bitmap->bmiHeader.biBitCount)); 94 if ( BmpHdr.cPlanes == 1 95 && (BmpHdr.cBitsCount == 32 || BmpHdr.cBitsCount == 24 /*???*/) 96 && BmpHdr.ulCompression == ) { 97 // already in canonical form 98 char *abImage = new char[BmpHdr.cbImage]; 99 /* fun stuff starts here. */ 100 //if (GipQueryBitmapBits() { 101 } 102 CString image(abImage, srcSize); 103 delete abImage; 104 return image; 105 } 106 107 } 108 return CString(); 109 68 110 // get datator 69 111 const char* src = (const char*)GlobalLock(data); … … 113 155 (bitmap->bmiHeader.biBitCount == 16 || 114 156 bitmap->bmiHeader.biBitCount == 32)) { 115 srcBits += 3 * sizeof( DWORD);157 srcBits += 3 * sizeof(ULONG); 116 158 } 117 159 } … … 144 186 145 187 return image; 188 #endif 146 189 } 190
Note:
See TracChangeset
for help on using the changeset viewer.