/* $Id$ */
/** @file
* Shared Clipboard: Some helper function for converting between the various eol.
*/
/*
* Copyright (C) 2006-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* The contents of this file may alternatively be used under the terms
* of the Common Development and Distribution License Version 1.0
* (CDDL) only, as it comes in the "COPYING.CDDL" file of the
* VirtualBox OSE distribution, in which case the provisions of the
* CDDL are applicable instead of those of the GPL.
*
* You may elect to license modified versions of this file under the
* terms and conditions of either the GPL or the CDDL or both.
*/
#ifndef ___CLIPBOARD_HELPER_H
#define ___CLIPBOARD_HELPER_H
enum {
/** In Linux, lines end with a linefeed character. */
/** In Windows, lines end with a carriage return and a linefeed character. */
/** Little endian "real" Utf16 strings start with this marker. */
/** Big endian "real" Utf16 strings start with this marker. */
};
/**
* Get the size of the buffer needed to hold a Utf16-LE zero terminated string with Windows EOLs
* converted from a Utf16 string with Linux EOLs.
*
* @returns RT error code
*
* @param pwszSrc The source Utf16 string
* @param cwSrc The length in 16 bit words of the source string
* @retval pcwDest The length of the destination string in 16 bit words
*/
/**
* Convert a Utf16 text with Linux EOLs to null-terminated Utf16-LE with Windows EOLs. Does no
* checking for validity.
*
* @returns VBox status code
*
* @param pwszSrc Source Utf16 text to convert
* @param cwSrc Size of the source text in 16 bit words
* @retval pu16Dest Buffer to store the converted text to.
* @retval pcwDest Size of the buffer for the converted text in 16 bit words
*/
/**
* Get the size of the buffer needed to hold a zero-terminated Utf16 string with Linux EOLs
* converted from a Utf16 string with Windows EOLs.
*
* @returns RT status code
*
* @param pwszSrc The source Utf16 string
* @param cwSrc The length in 16 bit words of the source string
* @retval pcwDest The length of the destination string in 16 bit words
*/
/**
* Convert Utf16-LE text with Windows EOLs to zero-terminated Utf16 with Linux EOLs. This
* function does not verify that the Utf16 is valid.
*
* @returns VBox status code
*
* @param pwszSrc Text to convert
* @param cwSrc Size of the source text in 16 bit words
* @param pu16Dest The buffer to store the converted text to
* @param cwDest The size of the buffer for the destination text in 16 bit words
*/
#pragma pack(1)
/** @todo r=bird: Why duplicate these structures here, we've got them in
* DevVGA.cpp already! */
/**
* Bitmap File Header. Official win32 name is BITMAPFILEHEADER
* Always Little Endian.
*/
typedef struct BMFILEHEADER
{
} BMFILEHEADER;
/** Pointer to a BMFILEHEADER structure. */
/** BMP file magic number */
/**
* Bitmap Info Header. Official win32 name is BITMAPINFOHEADER
* Always Little Endian.
*/
typedef struct BMINFOHEADER
{
} BMINFOHEADER;
/** Pointer to a BMINFOHEADER structure. */
#pragma pack()
/**
* Convert CF_DIB data to full BMP data by prepending the BM header.
* Allocates with RTMemAlloc.
*
* @returns VBox status code
*
* @param pSrc DIB data to convert
* @param cbSrc Size of the DIB data to convert in bytes
* @param ppDest Where to store the pointer to the buffer for the destination data
* @param pcbDest Pointer to the size of the buffer for the destination data in bytes
*/
/**
* Get the address and size of CF_DIB data in a full BMP data in the input buffer.
* Does not do any allocation.
*
* @returns VBox status code
*
* @param pSrc BMP data to convert
* @param cbSrc Size of the BMP data to convert in bytes
* @param ppDest Where to store the pointer to the destination data
* @param pcbDest Pointer to the size of the destination data in bytes
*/
#endif