home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 10.ddi / TVSRC.ZIP / TMEMO.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  2.9 KB  |  104 lines

  1. /*------------------------------------------------------------*/
  2. /* filename - tmemo.cpp                                       */
  3. /*                                                            */
  4. /* function(s)                                                */
  5. /*            TMemo member functions                          
  6. /*------------------------------------------------------------*/
  7.  
  8. /*------------------------------------------------------------*/
  9. /*                                                            */
  10. /*    Turbo Vision -  Version 1.0                             */
  11. /*                                                            */
  12. /*                                                            */
  13. /*    Copyright (c) 1991 by Borland International             */
  14. /*    All Rights Reserved.                                    */
  15. /*                                                            */
  16. /*------------------------------------------------------------*/
  17.  
  18. #define Uses_TKeys
  19. #define Uses_TEditor
  20. #define Uses_TMemo
  21. #define Uses_TEvent
  22. #define Uses_opstream
  23. #define Uses_ipstream
  24. #include <tv.h>
  25.  
  26. #define cpMemo      "\x1A\x1B"
  27.  
  28. TMemo::TMemo( const TRect& bounds,
  29.                   TScrollBar *aHScrollBar,
  30.                   TScrollBar *aVScrollBar,
  31.                   TIndicator *aIndicator,
  32.                   ushort aBufSize ) :
  33.     TEditor( bounds, aHScrollBar, aVScrollBar, aIndicator, aBufSize )
  34. {
  35. }
  36.  
  37. ushort TMemo::dataSize()
  38. {
  39.     return bufSize + sizeof( ushort );
  40. }
  41.  
  42. void TMemo::getData( void *rec )
  43. {
  44.     TMemoData *data = (TMemoData *)rec;
  45.  
  46.     data->length = bufLen;
  47.     memcpy(data->buffer, buffer, curPtr);
  48.     memcpy(&data->buffer[curPtr], buffer+(curPtr + gapLen), bufLen - curPtr);
  49.     memset(&data->buffer[bufLen], 0, bufSize - bufLen);
  50. }
  51.  
  52. void TMemo::setData( void *rec )
  53. {
  54.     TMemoData *data = (TMemoData *)rec;
  55.  
  56.     memcpy(&buffer[bufSize - data->length], data->buffer, data->length);
  57.     setBufLen(data->length);
  58. }
  59.  
  60. TPalette& TMemo::getPalette() const
  61. {
  62.     static TPalette palette( cpMemo, sizeof( cpMemo )-1 );
  63.     return palette;
  64. }
  65.  
  66. void TMemo::handleEvent( TEvent& event )
  67. {
  68.     if( event.what != evKeyDown || event.keyDown.keyCode != kbTab )
  69.         TEditor::handleEvent(event);
  70. }
  71.  
  72. void TMemo::write( opstream& os )
  73. {
  74.     TEditor::write( os );
  75.     os << bufLen;
  76.     os.writeBytes( buffer, curPtr );
  77.     os.writeBytes( buffer + gapLen, bufLen - curPtr );
  78. }
  79.  
  80. void *TMemo::read( ipstream& is )
  81. {
  82.     TEditor::read( is );
  83.     ushort length;
  84.     is >> length;
  85.     if( isValid )
  86.         {
  87.         is.readBytes( buffer + bufSize - length, length );
  88.         setBufLen( length );
  89.         }
  90.     else
  91.         is.seekg( is.tellg() + length );
  92.     return this;
  93. }
  94.  
  95. TStreamable *TMemo::build()
  96. {
  97.     return new TMemo( streamableInit );
  98. }
  99.  
  100. TMemo::TMemo( StreamableInit ) : TEditor( streamableInit )
  101. {
  102. }
  103.  
  104.