summary refs log tree commit diff
path: root/clients/common/qrcodegen.h
diff options
context:
space:
mode:
Diffstat (limited to 'clients/common/qrcodegen.h')
-rw-r--r--clients/common/qrcodegen.h149
1 files changed, 75 insertions, 74 deletions
diff --git a/clients/common/qrcodegen.h b/clients/common/qrcodegen.h
index 55e2bfec..b91ae49a 100644
--- a/clients/common/qrcodegen.h
+++ b/clients/common/qrcodegen.h
@@ -27,12 +27,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-
 /*
  * This library creates QR Code symbols, which is a type of two-dimension barcode.
  * Invented by Denso Wave and described in the ISO/IEC 18004 standard.
@@ -48,53 +46,49 @@ extern "C" {
  * (Note that all ways require supplying the desired error correction level and various byte buffers.)
  */
 
-
 /*---- Enum and struct types----*/
 
 /*
  * The error correction level in a QR Code symbol.
  */
 enum qrcodegen_Ecc {
-	// Must be declared in ascending order of error protection
-	// so that an internal qrcodegen function works properly
-	qrcodegen_Ecc_LOW = 0 ,  // The QR Code can tolerate about  7% erroneous codewords
-	qrcodegen_Ecc_MEDIUM  ,  // The QR Code can tolerate about 15% erroneous codewords
-	qrcodegen_Ecc_QUARTILE,  // The QR Code can tolerate about 25% erroneous codewords
-	qrcodegen_Ecc_HIGH    ,  // The QR Code can tolerate about 30% erroneous codewords
+    // Must be declared in ascending order of error protection
+    // so that an internal qrcodegen function works properly
+    qrcodegen_Ecc_LOW = 0,   // The QR Code can tolerate about  7% erroneous codewords
+    qrcodegen_Ecc_MEDIUM,    // The QR Code can tolerate about 15% erroneous codewords
+    qrcodegen_Ecc_QUARTILE,  // The QR Code can tolerate about 25% erroneous codewords
+    qrcodegen_Ecc_HIGH,      // The QR Code can tolerate about 30% erroneous codewords
 };
 
-
 /*
  * The mask pattern used in a QR Code symbol.
  */
 enum qrcodegen_Mask {
-	// A special value to tell the QR Code encoder to
-	// automatically select an appropriate mask pattern
-	qrcodegen_Mask_AUTO = -1,
-	// The eight actual mask patterns
-	qrcodegen_Mask_0 = 0,
-	qrcodegen_Mask_1,
-	qrcodegen_Mask_2,
-	qrcodegen_Mask_3,
-	qrcodegen_Mask_4,
-	qrcodegen_Mask_5,
-	qrcodegen_Mask_6,
-	qrcodegen_Mask_7,
+    // A special value to tell the QR Code encoder to
+    // automatically select an appropriate mask pattern
+    qrcodegen_Mask_AUTO = -1,
+    // The eight actual mask patterns
+    qrcodegen_Mask_0 = 0,
+    qrcodegen_Mask_1,
+    qrcodegen_Mask_2,
+    qrcodegen_Mask_3,
+    qrcodegen_Mask_4,
+    qrcodegen_Mask_5,
+    qrcodegen_Mask_6,
+    qrcodegen_Mask_7,
 };
 
-
 /*
  * Describes how a segment's data bits are interpreted.
  */
 enum qrcodegen_Mode {
-	qrcodegen_Mode_NUMERIC      = 0x1,
-	qrcodegen_Mode_ALPHANUMERIC = 0x2,
-	qrcodegen_Mode_BYTE         = 0x4,
-	qrcodegen_Mode_KANJI        = 0x8,
-	qrcodegen_Mode_ECI          = 0x7,
+    qrcodegen_Mode_NUMERIC      = 0x1,
+    qrcodegen_Mode_ALPHANUMERIC = 0x2,
+    qrcodegen_Mode_BYTE         = 0x4,
+    qrcodegen_Mode_KANJI        = 0x8,
+    qrcodegen_Mode_ECI          = 0x7,
 };
 
-
 /*
  * A segment of character/binary/control data in a QR Code symbol.
  * The mid-level way to create a segment is to take the payload data
@@ -107,43 +101,41 @@ enum qrcodegen_Mode {
  * the largest QR Code (version 40) has 31329 modules.
  */
 struct qrcodegen_Segment {
-	// The mode indicator of this segment.
-	enum qrcodegen_Mode mode;
-
-	// The length of this segment's unencoded data. Measured in characters for
-	// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
-	// Always zero or positive. Not the same as the data's bit length.
-	int numChars;
-
-	// The data bits of this segment, packed in bitwise big endian.
-	// Can be null if the bit length is zero.
-	uint8_t *data;
-
-	// The number of valid data bits used in the buffer. Requires
-	// 0 <= bitLength <= 32767, and bitLength <= (capacity of data array) * 8.
-	// The character count (numChars) must agree with the mode and the bit buffer length.
-	int bitLength;
+    // The mode indicator of this segment.
+    enum qrcodegen_Mode mode;
+
+    // The length of this segment's unencoded data. Measured in characters for
+    // numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
+    // Always zero or positive. Not the same as the data's bit length.
+    int numChars;
+
+    // The data bits of this segment, packed in bitwise big endian.
+    // Can be null if the bit length is zero.
+    uint8_t *data;
+
+    // The number of valid data bits used in the buffer. Requires
+    // 0 <= bitLength <= 32767, and bitLength <= (capacity of data array) * 8.
+    // The character count (numChars) must agree with the mode and the bit buffer length.
+    int bitLength;
 };
 
-
-
 /*---- Macro constants and functions ----*/
 
-#define qrcodegen_VERSION_MIN   1  // The minimum version number supported in the QR Code Model 2 standard
-#define qrcodegen_VERSION_MAX  40  // The maximum version number supported in the QR Code Model 2 standard
+#define qrcodegen_VERSION_MIN \
+    1  // The minimum version number supported in the QR Code Model 2 standard
+#define qrcodegen_VERSION_MAX \
+    40  // The maximum version number supported in the QR Code Model 2 standard
 
 // Calculates the number of bytes needed to store any QR Code up to and including the given version number,
 // as a compile-time constant. For example, 'uint8_t buffer[qrcodegen_BUFFER_LEN_FOR_VERSION(25)];'
 // can store any single QR Code from version 1 to 25 (inclusive). The result fits in an int (or int16).
 // Requires qrcodegen_VERSION_MIN <= n <= qrcodegen_VERSION_MAX.
-#define qrcodegen_BUFFER_LEN_FOR_VERSION(n)  ((((n) * 4 + 17) * ((n) * 4 + 17) + 7) / 8 + 1)
+#define qrcodegen_BUFFER_LEN_FOR_VERSION(n) ((((n) *4 + 17) * ((n) *4 + 17) + 7) / 8 + 1)
 
 // The worst-case number of bytes needed to store one QR Code, up to and including
 // version 40. This value equals 3918, which is just under 4 kilobytes.
 // Use this more convenient value to avoid calculating tighter memory bounds for buffers.
-#define qrcodegen_BUFFER_LEN_MAX  qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX)
-
-
+#define qrcodegen_BUFFER_LEN_MAX qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX)
 
 /*---- Functions (high level) to generate QR Codes ----*/
 
@@ -166,9 +158,14 @@ struct qrcodegen_Segment {
  * - Please consult the QR Code specification for information on
  *   data capacities per version, ECC level, and text encoding mode.
  */
-bool qrcodegen_encodeText(const char *text, uint8_t tempBuffer[], uint8_t qrcode[],
-	enum qrcodegen_Ecc ecl, int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
-
+bool qrcodegen_encodeText(const char *        text,
+                          uint8_t             tempBuffer[],
+                          uint8_t             qrcode[],
+                          enum qrcodegen_Ecc  ecl,
+                          int                 minVersion,
+                          int                 maxVersion,
+                          enum qrcodegen_Mask mask,
+                          bool                boostEcl);
 
 /*
  * Encodes the given binary data to a QR Code, returning true if encoding succeeded.
@@ -188,9 +185,14 @@ bool qrcodegen_encodeText(const char *text, uint8_t tempBuffer[], uint8_t qrcode
  * - Please consult the QR Code specification for information on
  *   data capacities per version, ECC level, and text encoding mode.
  */
-bool qrcodegen_encodeBinary(uint8_t dataAndTemp[], size_t dataLen, uint8_t qrcode[],
-	enum qrcodegen_Ecc ecl, int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
-
+bool qrcodegen_encodeBinary(uint8_t             dataAndTemp[],
+                            size_t              dataLen,
+                            uint8_t             qrcode[],
+                            enum qrcodegen_Ecc  ecl,
+                            int                 minVersion,
+                            int                 maxVersion,
+                            enum qrcodegen_Mask mask,
+                            bool                boostEcl);
 
 /*---- Functions (low level) to generate QR Codes ----*/
 
@@ -206,9 +208,11 @@ bool qrcodegen_encodeBinary(uint8_t dataAndTemp[], size_t dataLen, uint8_t qrcod
  * result in them being clobbered, but the QR Code output will still be correct.
  * But the qrcode array must not overlap tempBuffer or any segment's data buffer.
  */
-bool qrcodegen_encodeSegments(const struct qrcodegen_Segment segs[], size_t len,
-	enum qrcodegen_Ecc ecl, uint8_t tempBuffer[], uint8_t qrcode[]);
-
+bool qrcodegen_encodeSegments(const struct qrcodegen_Segment segs[],
+                              size_t                         len,
+                              enum qrcodegen_Ecc             ecl,
+                              uint8_t                        tempBuffer[],
+                              uint8_t                        qrcode[]);
 
 /*
  * Renders a QR Code representing the given segments with the given encoding parameters.
@@ -225,9 +229,15 @@ bool qrcodegen_encodeSegments(const struct qrcodegen_Segment segs[], size_t len,
  * result in them being clobbered, but the QR Code output will still be correct.
  * But the qrcode array must not overlap tempBuffer or any segment's data buffer.
  */
-bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment segs[], size_t len, enum qrcodegen_Ecc ecl,
-	int minVersion, int maxVersion, int mask, bool boostEcl, uint8_t tempBuffer[], uint8_t qrcode[]);
-
+bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment segs[],
+                                      size_t                         len,
+                                      enum qrcodegen_Ecc             ecl,
+                                      int                            minVersion,
+                                      int                            maxVersion,
+                                      int                            mask,
+                                      bool                           boostEcl,
+                                      uint8_t                        tempBuffer[],
+                                      uint8_t                        qrcode[]);
 
 /*
  * Tests whether the given string can be encoded as a segment in alphanumeric mode.
@@ -236,14 +246,12 @@ bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment segs[], siz
  */
 bool qrcodegen_isAlphanumeric(const char *text);
 
-
 /*
  * Tests whether the given string can be encoded as a segment in numeric mode.
  * A string is encodable iff each character is in the range 0 to 9.
  */
 bool qrcodegen_isNumeric(const char *text);
 
-
 /*
  * Returns the number of bytes (uint8_t) needed for the data buffer of a segment
  * containing the given number of characters using the given mode. Notes:
@@ -257,7 +265,6 @@ bool qrcodegen_isNumeric(const char *text);
  */
 size_t qrcodegen_calcSegmentBufferSize(enum qrcodegen_Mode mode, size_t numChars);
 
-
 /*
  * Returns a segment representing the given binary data encoded in
  * byte mode. All input byte arrays are acceptable. Any text string
@@ -265,13 +272,11 @@ size_t qrcodegen_calcSegmentBufferSize(enum qrcodegen_Mode mode, size_t numChars
  */
 struct qrcodegen_Segment qrcodegen_makeBytes(const uint8_t data[], size_t len, uint8_t buf[]);
 
-
 /*
  * Returns a segment representing the given string of decimal digits encoded in numeric mode.
  */
 struct qrcodegen_Segment qrcodegen_makeNumeric(const char *digits, uint8_t buf[]);
 
-
 /*
  * Returns a segment representing the given text string encoded in alphanumeric mode.
  * The characters allowed are: 0 to 9, A to Z (uppercase only), space,
@@ -279,14 +284,12 @@ struct qrcodegen_Segment qrcodegen_makeNumeric(const char *digits, uint8_t buf[]
  */
 struct qrcodegen_Segment qrcodegen_makeAlphanumeric(const char *text, uint8_t buf[]);
 
-
 /*
  * Returns a segment representing an Extended Channel Interpretation
  * (ECI) designator with the given assignment value.
  */
 struct qrcodegen_Segment qrcodegen_makeEci(long assignVal, uint8_t buf[]);
 
-
 /*---- Functions to extract raw data from QR Codes ----*/
 
 /*
@@ -297,7 +300,6 @@ struct qrcodegen_Segment qrcodegen_makeEci(long assignVal, uint8_t buf[]);
  */
 int qrcodegen_getSize(const uint8_t qrcode[]);
 
-
 /*
  * Returns the color of the module (pixel) at the given coordinates, which is false
  * for white or true for black. The top left corner has the coordinates (x=0, y=0).
@@ -305,7 +307,6 @@ int qrcodegen_getSize(const uint8_t qrcode[]);
  */
 bool qrcodegen_getModule(const uint8_t qrcode[], int x, int y);
 
-
 #ifdef __cplusplus
 }
 #endif