Ignore:
Timestamp:
Jul 29, 2006, 6:43:07 AM (19 years ago)
Author:
bird
Message:

Two classes (CPMScreen and CPMKeyState) + the hook dll left (and debugging of course).

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/synergy/lib/platform/CPMClipboardAnyTextConverter.cpp

    r2751 r2752  
    22 * synergy -- mouse and keyboard sharing utility
    33 * Copyright (C) 2002 Chris Schoeneman
     4 * Copyright (C) 2006 Knut St. Osmundsen
    45 *
    56 * This package is free software; you can redistribute it and/or
     
    1314 */
    1415
    15 #include "CMSWindowsClipboardAnyTextConverter.h"
     16#include "CPMClipboardAnyTextConverter.h"
    1617
    1718//
    18 // CMSWindowsClipboardAnyTextConverter
     19// CPMClipboardAnyTextConverter
    1920//
    2021
    21 CMSWindowsClipboardAnyTextConverter::CMSWindowsClipboardAnyTextConverter()
     22CPMClipboardAnyTextConverter::CPMClipboardAnyTextConverter()
    2223{
    2324        // do nothing
    2425}
    2526
    26 CMSWindowsClipboardAnyTextConverter::~CMSWindowsClipboardAnyTextConverter()
     27CPMClipboardAnyTextConverter::~CPMClipboardAnyTextConverter()
    2728{
    2829        // do nothing
     
    3031
    3132IClipboard::EFormat
    32 CMSWindowsClipboardAnyTextConverter::getFormat() const
     33CPMClipboardAnyTextConverter::getFormat() const
    3334{
    3435        return IClipboard::kText;
    3536}
     37ULONG
     38CPMClipboardAnyTextConverter::getPMFormatInfo() const
     39{
     40    return CFI_POINTER;
     41}
    3642
    37 HANDLE
    38 CMSWindowsClipboardAnyTextConverter::fromIClipboard(const CString& data) const
     43ULONG
     44CPMClipboardAnyTextConverter::fromIClipboard(const CString& data) const
    3945{
    4046        // convert linefeeds and then convert to desired encoding
    41         CString text = doFromIClipboard(convertLinefeedToWin32(data));
    42         UInt32 size = text.size();
     47        CString text = doFromIClipboard(convertLinefeedToPM(data));
     48        UInt32 cb = text.size();
    4349
    4450        // copy to memory handle
    45         HGLOBAL gData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, size);
    46         if (gData != NULL) {
    47                 // get a pointer to the allocated memory
    48                 char* dst = (char*)GlobalLock(gData);
    49                 if (dst != NULL) {
    50                         memcpy(dst, text.data(), size);
    51                         GlobalUnlock(gData);
    52                 }
    53                 else {
    54                         GlobalFree(gData);
    55                         gData = NULL;
    56                 }
    57         }
     51    PVOID pv = NULL;
     52    APIRET rc = DosAllocSharedMem(&pv, NULL, cb, PAG_READ | PAG_WRITE | PAG_COMMIT | OBJ_GETTABLE | OBJ_GIVEABLE);
     53    if (rc == NO_ERROR) {
     54        return (ULONG)memcpy(pv, text.data(), cb);
     55    }
     56    return 0;
     57}
    5858
    59         return gData;
     59void
     60CPMClipboardAnyTextConverter::freePMData(ULONG ulPMData) const
     61{
     62    DosFreeMem((PVOID)ulPMData);
    6063}
    6164
    6265CString
    63 CMSWindowsClipboardAnyTextConverter::toIClipboard(HANDLE data) const
     66CPMClipboardAnyTextConverter::toIClipboard(ULONG data) const
    6467{
    65         // get datator
    66         const char* src = (const char*)GlobalLock(data);
    67         UInt32 srcSize = (UInt32)GlobalSize(data);
    68         if (src == NULL || srcSize <= 1) {
    69                 return CString();
    70         }
    71 
    7268        // convert text
    73         CString text = doToIClipboard(CString(src, srcSize));
    74 
    75         // release handle
    76         GlobalUnlock(data);
     69    const char *psz = (const char *)data;
     70        CString text = doToIClipboard(CString(psz));
    7771
    7872        // convert newlines
     
    8175
    8276CString
    83 CMSWindowsClipboardAnyTextConverter::convertLinefeedToWin32(
    84                                 const CString& src) const
     77CPMClipboardAnyTextConverter::convertLinefeedToPM(const CString& src) const
    8578{
    8679        // note -- we assume src is a valid UTF-8 string
     
    115108
    116109CString
    117 CMSWindowsClipboardAnyTextConverter::convertLinefeedToUnix(
    118                                 const CString& src) const
     110CPMClipboardAnyTextConverter::convertLinefeedToUnix(const CString& src) const
    119111{
    120112        // count newlines in string
Note: See TracChangeset for help on using the changeset viewer.