![]() |
wxIScan
|
Go to the source code of this file.
Functions | |
| wxImage | Image2Mono (const wxImage &oSrcImage, int nMonoThreshold) |
| Convert an image to monochrome (black and white). | |
| static double | x_exp_y (double x, double y) |
| Calculate the value of x^y. | |
| static unsigned char | Limit255 (int x) |
| Limit the given integer value to the intervall [0..255] (8 bit). | |
| wxImage | EnhenceColours (const wxImage &oSrcImage, int nBrightness, int nContrast, int nGamma, int nRed, int nGreen, int nBlue) |
| Modify brightness, contrast, gamma value, red, green and blue channel of an image. | |
| bool | CopyText2Clipboard (const wxString &strText) |
| Copy the given text to the sytem clipboard. | |
| bool | CopyImage2Clipboard (const wxImage &oImage) |
| Copy the given image to the sytem clipboard. | |
| wxString | GetTextFromFile (const wxString &strFilename) |
| Load the content of a text file into memory. | |
| bool CopyImage2Clipboard | ( | const wxImage & | oImage | ) |
Copy the given image to the sytem clipboard.
| oImage | the image to copy to the clipboard |
Definition at line 199 of file wxiscanglobals.cpp.
Referenced by wxIScanFrame::OnEditCopy().
{
// Create a image data object for the clipboard.
wxBitmapDataObject *poBitmapData=new wxBitmapDataObject;
if( !poBitmapData )
{
wxLogError( wxString( wxT( "wxIScanFrame::CopyImage2Clipboard -- " ) )
+ _( "Failed to create clipboard image data object." ) );
return false;
}
// Copy the image to the image data object for the clipboard.
poBitmapData->SetBitmap( oImage );
// Open the clipboard and copy the image to the clipboard.
bool bRetC= wxTheClipboard->Open() && wxTheClipboard->SetData( poBitmapData );
// Close the clipboard (and release it).
wxTheClipboard->Close();
// Log errors.
if( !bRetC )
{
wxLogError( wxString( wxT( "wxIScanFrame::CopyImage2Clipboard -- " ) )
+ _( "Failed to copy image to clipboard." ) );
}
// Return the error state.
return bRetC;
}
| bool CopyText2Clipboard | ( | const wxString & | strText | ) |
Copy the given text to the sytem clipboard.
| strText | the text to copy to the clipboard |
Definition at line 165 of file wxiscanglobals.cpp.
Referenced by wxIScanFrame::OnDocumentCopyText().
{
// Create a text data object for the clipboard.
wxTextDataObject *poTextData=new wxTextDataObject;
if( !poTextData )
{
wxLogError( wxString( wxT( "wxIScanFrame::CopyText2Clipboard -- " ) )
+ _( "Failed to create clipboard text data object." ) );
return false;
}
// Copy the text to the text data object for the clipboard.
poTextData->SetText( strText );
// Open the clipboard and copy the text to the clipboard.
bool bRetC= wxTheClipboard->Open() && wxTheClipboard->SetData( poTextData );
// Close the clipboard (and release it).
wxTheClipboard->Close();
// Log errors.
if( !bRetC )
{
wxLogError( wxString( wxT( "wxIScanFrame::CopyText2Clipboard -- " ) )
+ _( "Failed to copy text to clipboard." ) );
}
// Return the error state.
return bRetC;
}
| wxImage EnhenceColours | ( | const wxImage & | oSrcImage, |
| int | nBrightness = 0, |
||
| int | nContrast = 0, |
||
| int | nGamma = 100, |
||
| int | nRed = 0, |
||
| int | nGreen = 0, |
||
| int | nBlue = 0 |
||
| ) |
Modify brightness, contrast, gamma value, red, green and blue channel of an image.
| oSrcImage | the image to be transformed |
| nBrightness | adjustment value for brightness |
| nContrast | adjustment value for constrast |
| nGamma | adjustment value for gamma value * 100 |
| nRed | adjustment value for red value |
| nGreen | adjustment value for green value |
| nBlue | adjustment value for blue value |
NOTE: The returned object is the transformed image. The original image is left intact.
Definition at line 99 of file wxiscanglobals.cpp.
References Limit255(), and x_exp_y().
{
wxImage oImage= oSrcImage;
// ...
int nCount= oImage.GetWidth() * oImage.GetHeight() * 3;
unsigned char *pImageDataSrc= oImage.GetData();
unsigned char *pImageDataDest= (unsigned char *)malloc( nCount * sizeof( unsigned char ) );
if( !pImageDataDest )
{
wxLogError( wxString( wxT( "EnhenceColours - " ) )
+ _( "Cannot allocate memory for destination image." ) );
return oImage;
}
// ...
int nIncRed= nRed + nBrightness;
int nIncGreen= nGreen + nBrightness;
int nIncBlue= nBlue + nBrightness;
double nContrastFactor= exp( (double)nContrast / 75.0 );
double nInvGamma= 100.0 / (double)nGamma;
// Recalculate the image as a whole. That is calculate brightness,
// contrast, gamma and color correction all at once.
//
// NOTE: We use floating point (double) calculation for not to cut off
// values as early as 8 bit integer calculation would do (for
// numeric stability). The disadvantage is that the transformation
// of one image of about 8 Mega pixels (e. g. an A4 page) even on
// a 1.6 GHertz machine lasts for more than 5s.
//
unsigned char *pIndex= pImageDataDest;
for( int i= 0; i < nCount; i += 3 )
{
// Red.
(*pIndex)= Limit255( (int)( x_exp_y( ( (double)( (*pImageDataSrc) + nIncRed ) * nContrastFactor ) / 255.0,
nInvGamma ) * 255.0 ) );
pImageDataSrc++;
pIndex++;
// Green.
(*pIndex)= Limit255( (int)( x_exp_y( ( (double)( (*pImageDataSrc) + nIncGreen ) * nContrastFactor ) / 255.0,
nInvGamma ) * 255.0 ) );
pImageDataSrc++;
pIndex++;
// Blue.
(*pIndex)= Limit255( (int)( x_exp_y( ( (double)( (*pImageDataSrc) + nIncBlue ) * nContrastFactor ) / 255.0,
nInvGamma ) * 255.0 ) );
pImageDataSrc++;
pIndex++;
}
oImage.SetData( pImageDataDest );
return oImage;
}
| wxString GetTextFromFile | ( | const wxString & | strFilename | ) |
Load the content of a text file into memory.
| strFilename | the name of the text file |
Definition at line 237 of file wxiscanglobals.cpp.
Referenced by wxIScanFrame::AddPdfPage(), wxIScanLuaScript::OCR(), wxIScanFrame::OnDocumentCopyText(), and wxIScanFrame::StartScript().
{
// Open a textfile, ...
wxFile oFile( strFilename );
if( !oFile.IsOpened() )
{
// Return an empty string on failure.
return wxEmptyString;
}
// ... create a temporary buffer of file size, ...
wxFileOffset nLength= oFile.Length();
char *pcBuffer= new char[nLength];
if( !pcBuffer )
{
// Return an empty string on failure.
return wxEmptyString;
}
// ... read the file's content into the buffer, ...
oFile.Read( pcBuffer, nLength );
// ... convert it to a wxString object (from UTF8), ...
wxString strText= wxString::FromUTF8( pcBuffer, nLength );
// ... delete the (temporary) buffer, ...
delete[] pcBuffer;
// ... and return the text.
return strText;
}
| wxImage Image2Mono | ( | const wxImage & | oSrcImage, |
| int | nMonoThreshold = 128 |
||
| ) |
Convert an image to monochrome (black and white).
| oSrcImage | the image to transformed |
| nMonoThreshold | value for deciding if a point is black or white |
NOTE: The returned object is the transformed image. The original image is left intact.
Definition at line 27 of file wxiscanglobals.cpp.
Referenced by wxIScanFrame::ApplyProfile(), and wxIScanFrame::OCR().
{
wxImage oImage= oSrcImage.ConvertToGreyscale();
int nCount= oImage.GetWidth() * oImage.GetHeight() * 3;
unsigned char *pImageDataSrc= oImage.GetData();
unsigned char *pImageDataDest= (unsigned char *)malloc( nCount * sizeof( unsigned char ) );
if( !pImageDataDest )
{
wxLogError( wxString( wxT( "Image2Mono - " ) )
+ _( "Cannot allocate memory for destination image." ) );
return oImage;
}
// ...
unsigned char *pIndex= pImageDataDest;
for( int i= 0; i < nCount; i += 3 )
{
unsigned char nValue= ( (*pImageDataSrc) < nMonoThreshold ) ? 0 : 255;
// Red.
(*pIndex)= nValue;
pImageDataSrc++;
pIndex++;
// Green.
(*pIndex)= nValue;
pImageDataSrc++;
pIndex++;
// Blue.
(*pIndex)= nValue;
pImageDataSrc++;
pIndex++;
}
oImage.SetData( pImageDataDest );
return oImage;
}
| static unsigned char Limit255 | ( | int | x | ) | [inline, static] |
Limit the given integer value to the intervall [0..255] (8 bit).
| x | the integer value to limit |
NOTE: At the moment this function is internally called by EnhenceColours() only.
Definition at line 91 of file wxiscanglobals.cpp.
Referenced by EnhenceColours().
{
return ( x > 255 ) ? 255 : ( ( x < 0 ) ? 0 : x );
}
| static double x_exp_y | ( | double | x, |
| double | y | ||
| ) | [inline, static] |
Calculate the value of x^y.
| x | the base (as a floating point value) |
| y | the exponent (as a floating point value) |
NOTE: At the moment this function is internally called by EnhenceColours() only.
Definition at line 78 of file wxiscanglobals.cpp.
Referenced by EnhenceColours().
{
return exp( y * log( x ) );
}