tdelibs/interfaces/khexedit/valuecolumninterface.h

171 lines
5.3 KiB

/***************************************************************************
valuecolumninterface.h - description
-------------------
begin : Fri Sep 12 2003
copyright : (C) 2003 by Friedrich W. H. Kossebau
email : Friedrich.W.H@Kossebau.de
***************************************************************************/
/***************************************************************************
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License version 2 as published by the Free Software Foundation. *
* *
***************************************************************************/
#ifndef VALUECOLUMNINTERFACE_H
#define VALUECOLUMNINTERFACE_H
namespace KHE
{
/**
* Interface for the value displaying column of a hexedit widget
*
* @author Friedrich W. H. Kossebau <Friedrich.W.H@Kossebau.de>
* @see createBytesEditWidget(), valueColumnInterface()
* @since 3.2
*/
class ValueColumnInterface
{
public:
/** collection of ids for the different numeric codings of a byte */
enum KCoding
{
/** hexadecimal encoding */
HexadecimalCoding=0,
/** decimal encoding */
DecimalCoding=1,
/** octal encoding */
OctalCoding=2,
/** bit by bit coding */
BinaryCoding=3,
/** @internal enables extension without breaking binary compatibility */
MaxCodingId=0xFFFF
};
/** collection of ids for the fitting of the layout into the available widget's width */
enum KResizeStyle
{
/** we don't care about the actual sizing of the widget
* but stick to the given NoOfBytesPerLine
*/
NoResize=0,
/** we try to fit the layout to the available width
* but only with full groups like set in NoOfGroupedBytes
* with minimum of one full group
*/
LockGrouping=1,
/** we try to fit as many bytes into the width as possible, with minimum of 1 byte
*/
FullSizeUsage=2,
/** @internal enables extension without breaking binary compatibility */
MaxResizeStyleId=0xFF
};
public: // get methods
/** @return the current resize style
* @see setResizeStyle()
*/
virtual KResizeStyle resizeStyle() const = 0;
/** @return the current number of bytes per line
* @see setNoOfBytesPerLine()
*/
virtual int noOfBytesPerLine() const = 0;
/** @return the current coding
* @see setCoding()
*/
virtual KCoding coding() const = 0;
/** @return the spacing between bytes (in pixels)
* @see setByteSpacingWidth()
*/
virtual int byteSpacingWidth() const = 0;
/** @return the current number of bytes per group
* @see setNoOfGroupedBytes()
*/
virtual int noOfGroupedBytes() const = 0;
/** @return the spacing between groups of bytes (in pixels)
* @see setGroupSpacingWidth()
*/
virtual int groupSpacingWidth() const = 0;
/** @return the gap in the middle of a binary (in pixels)
* @see setBinaryGapWidth()
*/
virtual int binaryGapWidth() const = 0;
public: // set methods
/** sets the resize style for the hex column.
* Default is @c FullSizeUsage
* @param Style new style
* @see resizeStyle()
*/
virtual void setResizeStyle( KResizeStyle Style ) = 0;
/** sets the number of bytes per line, switching the resize style to @c NoResize
* Default is 16.
* @param NoCpL new number of bytes per line
* @see noOfBytesPerLine()
*/
virtual void setNoOfBytesPerLine( int NoCpL ) = 0;
/** sets the format of the hex column.
* If the coding is not available the format will not be changed.
* Default is @c HexadecimalCoding.
* @param C
* @see coding()
*/
virtual void setCoding( KCoding C ) = 0;
/** sets the spacing between the bytes.
* Default is 3.
* @param BSW new spacing between bytes (in pixels)
* @see byteSpacingWidth()
*/
virtual void setByteSpacingWidth( int BSW ) = 0;
/** sets the numbers of grouped bytes, 0 means no grouping.
* Default is 4.
* @param NoGB new number of bytes per group
* @see noOfGroupedBytes()
*/
virtual void setNoOfGroupedBytes( int NoGB ) = 0;
/** sets the spacing between the groups.
* Default is 9.
* @param GSW new spacing width (in pixels)
* @see groupSpacingWidth()
*/
virtual void setGroupSpacingWidth( int GSW ) = 0;
/** sets the spacing in the middle of a binary encoded byte.
* Default is 1.
* @param BGW spacing in the middle of a binary (in pixels)
* @see binaryGapWidth()
*/
virtual void setBinaryGapWidth( int BGW ) = 0;
};
/** tries to get the valuecolumn interface of t
* @return a pointer to the interface, otherwise 0
* @author Friedrich W. H. Kossebau <Friedrich.W.H@Kossebau.de>
* @since 3.2
*/
template<class T>
ValueColumnInterface *valueColumnInterface( T *t )
{
if( !t )
return 0;
return dynamic_cast<KHE::ValueColumnInterface*>( t );
}
}
#endif