summaryrefslogtreecommitdiffstats
path: root/interfaces/khexedit/valuecolumninterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'interfaces/khexedit/valuecolumninterface.h')
-rw-r--r--interfaces/khexedit/valuecolumninterface.h170
1 files changed, 170 insertions, 0 deletions
diff --git a/interfaces/khexedit/valuecolumninterface.h b/interfaces/khexedit/valuecolumninterface.h
new file mode 100644
index 000000000..7dafa7d42
--- /dev/null
+++ b/interfaces/khexedit/valuecolumninterface.h
@@ -0,0 +1,170 @@
+/***************************************************************************
+ 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 static_cast<ValueColumnInterface*>( t->qt_cast("KHE::ValueColumnInterface") );
+}
+
+}
+
+#endif