TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
Classes | Functions | Variables
qrspec.c File Reference
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "qrspec.h"
#include "qrinput.h"

Go to the source code of this file.

Classes

struct  QRspec_Capacity
 

Functions

int QRspec_getDataLength (int version, QRecLevel level)
 Return maximum data code length (bytes) for the version. More...
 
int QRspec_getECCLength (int version, QRecLevel level)
 Return maximum error correction code length (bytes) for the version. More...
 
int QRspec_getMinimumVersion (int size, QRecLevel level)
 Return a version number that satisfies the input code length. More...
 
int QRspec_getWidth (int version)
 Return the width of the symbol for the version. More...
 
int QRspec_getRemainder (int version)
 Return the numer of remainder bits. More...
 
int QRspec_lengthIndicator (QRencodeMode mode, int version)
 Return the size of length indicator for the mode and version. More...
 
int QRspec_maximumWords (QRencodeMode mode, int version)
 Return the maximum length for the mode and version. More...
 
void QRspec_getEccSpec (int version, QRecLevel level, int spec[5])
 Return an array of ECC specification. More...
 
static void QRspec_putAlignmentMarker (unsigned char *frame, int width, int ox, int oy)
 Put an alignment marker. More...
 
static void QRspec_putAlignmentPattern (int version, unsigned char *frame, int width)
 
unsigned int QRspec_getVersionPattern (int version)
 Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. More...
 
unsigned int QRspec_getFormatInfo (int mask, QRecLevel level)
 Return BCH encoded format information pattern. More...
 
static void putFinderPattern (unsigned char *frame, int width, int ox, int oy)
 Put a finder pattern. More...
 
static unsigned char * QRspec_createFrame (int version)
 
unsigned char * QRspec_newFrame (int version)
 Return a copy of initialized frame. More...
 

Variables

static const QRspec_Capacity qrspecCapacity [QRSPEC_VERSION_MAX+1]
 Table of the capacity of symbols See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004. More...
 
static const int lengthTableBits [4][3]
 
static const int eccTable [QRSPEC_VERSION_MAX+1][4][2]
 Table of the error correction code (Reed-Solomon block) See Table 12-16 (pp.30-36), JIS X0510:2004. More...
 
static const int alignmentPattern [QRSPEC_VERSION_MAX+1][2]
 Positions of alignment patterns. More...
 
static const unsigned int versionPattern [QRSPEC_VERSION_MAX-6]
 Version information pattern (BCH coded). More...
 
static const unsigned int formatInfo [4][8]
 

Function Documentation

static void putFinderPattern ( unsigned char *  frame,
int  width,
int  ox,
int  oy 
)
static

Put a finder pattern.

Parameters
frame
width
ox,oyupper-left coordinate of the pattern

Definition at line 398 of file qrspec.c.

Referenced by QRspec_createFrame().

static unsigned char* QRspec_createFrame ( int  version)
static
int QRspec_getDataLength ( int  version,
QRecLevel  level 
)

Return maximum data code length (bytes) for the version.

Parameters
versionversion of the symbol
levelerror correction level
Returns
maximum size (bytes)

Definition at line 96 of file qrspec.c.

References QRspec_Capacity::ec, and QRspec_Capacity::words.

Referenced by QRinput_appendPaddingBit(), QRinput_splitQRinputToStruct(), and QRspec_getEccSpec().

int QRspec_getECCLength ( int  version,
QRecLevel  level 
)

Return maximum error correction code length (bytes) for the version.

Parameters
versionversion of the symbol
levelerror correction level
Returns
ECC size (bytes)

Definition at line 101 of file qrspec.c.

References QRspec_Capacity::ec.

Referenced by QRspec_getEccSpec().

void QRspec_getEccSpec ( int  version,
QRecLevel  level,
int  spec[5] 
)

Return an array of ECC specification.

Parameters
versionversion of the symbol
levelerror correction level
specan array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code,

of type2 blocks, # of data code}

Definition at line 232 of file qrspec.c.

References eccTable, QRspec_getDataLength(), and QRspec_getECCLength().

Referenced by QRraw_new().

unsigned int QRspec_getFormatInfo ( int  mask,
QRecLevel  level 
)

Return BCH encoded format information pattern.

Parameters
maskmask number
levelerror correction level
Returns
BCH encoded format information pattern

Definition at line 381 of file qrspec.c.

References formatInfo.

Referenced by Mask_writeFormatInformation().

int QRspec_getMinimumVersion ( int  size,
QRecLevel  level 
)

Return a version number that satisfies the input code length.

Parameters
sizeinput code length (byte)
levelerror correction level
Returns
version number

Definition at line 106 of file qrspec.c.

References QRspec_Capacity::ec, QRSPEC_VERSION_MAX, and QRspec_Capacity::words.

Referenced by QRinput_convertData(), and QRinput_estimateVersion().

int QRspec_getRemainder ( int  version)

Return the numer of remainder bits.

Parameters
versionvesion of the symbol
Returns
number of remainder bits

Definition at line 124 of file qrspec.c.

References QRspec_Capacity::remainder.

Referenced by QRcode_encodeMask().

unsigned int QRspec_getVersionPattern ( int  version)

Return BCH encoded version information pattern that is used for the symbol of version 7 or greater.

Use lower 18 bits.

Parameters
versionversion of the symbol
Returns
BCH encoded version information pattern

Definition at line 362 of file qrspec.c.

References QRSPEC_VERSION_MAX, and versionPattern.

Referenced by QRspec_createFrame().

int QRspec_getWidth ( int  version)

Return the width of the symbol for the version.

Parameters
versionvesion of the symbol
Returns
width of the symbol

Definition at line 119 of file qrspec.c.

References QRspec_Capacity::width.

Referenced by QRcode_encodeMask().

int QRspec_lengthIndicator ( QRencodeMode  mode,
int  version 
)

Return the size of length indicator for the mode and version.

Parameters
modeencode mode
versionvesion of the symbol
Returns
the size of the appropriate length indicator (bits).

Definition at line 140 of file qrspec.c.

References lengthTableBits, and QRinput_isSplittableMode().

Referenced by QRinput_encodeMode8(), QRinput_encodeModeAn(), QRinput_encodeModeKanji(), QRinput_encodeModeNum(), QRinput_estimateBitStreamSizeOfEntry(), QRinput_lengthOfCode(), Split_eat8(), Split_eatAn(), and Split_eatNum().

int QRspec_maximumWords ( QRencodeMode  mode,
int  version 
)

Return the maximum length for the mode and version.

Parameters
modeencode mode
versionvesion of the symbol
Returns
the maximum length (bytes)

Definition at line 156 of file qrspec.c.

References lengthTableBits, QR_MODE_KANJI, and QRinput_isSplittableMode().

Referenced by QRinput_encodeBitStream(), and QRinput_lengthOfCode().

unsigned char* QRspec_newFrame ( int  version)

Return a copy of initialized frame.

Parameters
versionversion of the symbol
Returns
Array of unsigned char. You can free it by free().

Definition at line 507 of file qrspec.c.

References QRspec_createFrame(), and QRSPEC_VERSION_MAX.

Referenced by QRcode_encodeMask().

static void QRspec_putAlignmentMarker ( unsigned char *  frame,
int  width,
int  ox,
int  oy 
)
static

Put an alignment marker.

Parameters
frame
width
ox,oycenter coordinate of the pattern

Definition at line 285 of file qrspec.c.

Referenced by QRspec_putAlignmentPattern().

static void QRspec_putAlignmentPattern ( int  version,
unsigned char *  frame,
int  width 
)
static

Definition at line 308 of file qrspec.c.

References alignmentPattern, and QRspec_putAlignmentMarker().

Referenced by QRspec_createFrame().

Variable Documentation

const int alignmentPattern[QRSPEC_VERSION_MAX+1][2]
static
Initial value:
= {
{ 0, 0},
{ 0, 0}, {18, 0}, {22, 0}, {26, 0}, {30, 0},
{34, 0}, {22, 38}, {24, 42}, {26, 46}, {28, 50},
{30, 54}, {32, 58}, {34, 62}, {26, 46}, {26, 48},
{26, 50}, {30, 54}, {30, 56}, {30, 58}, {34, 62},
{28, 50}, {26, 50}, {30, 54}, {28, 54}, {32, 58},
{30, 58}, {34, 62}, {26, 50}, {30, 54}, {26, 52},
{30, 56}, {34, 60}, {30, 58}, {34, 62}, {30, 54},
{24, 50}, {28, 54}, {32, 58}, {26, 54}, {30, 58},
}

Positions of alignment patterns.

This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them.

See Table 1 in Appendix E (pp.71) of JIS X0510:2004.

Definition at line 267 of file qrspec.c.

Referenced by QRspec_putAlignmentPattern().

const int eccTable[QRSPEC_VERSION_MAX+1][4][2]
static

Table of the error correction code (Reed-Solomon block) See Table 12-16 (pp.30-36), JIS X0510:2004.

Definition at line 188 of file qrspec.c.

Referenced by QRspec_getEccSpec().

const unsigned int formatInfo[4][8]
static
Initial value:
= {
{0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976},
{0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0},
{0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed},
{0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b}
}

Definition at line 374 of file qrspec.c.

Referenced by QRspec_getFormatInfo().

const int lengthTableBits[4][3]
static
Initial value:
= {
{10, 12, 14},
{ 9, 11, 13},
{ 8, 16, 16},
{ 8, 10, 12}
}

Definition at line 133 of file qrspec.c.

Referenced by QRspec_lengthIndicator(), and QRspec_maximumWords().

const QRspec_Capacity qrspecCapacity[QRSPEC_VERSION_MAX+1]
static

Table of the capacity of symbols See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004.

Definition at line 52 of file qrspec.c.

const unsigned int versionPattern[QRSPEC_VERSION_MAX-6]
static
Initial value:
= {
0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d,
0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9,
0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75,
0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64,
0x27541, 0x28c69
}

Version information pattern (BCH coded).

See Table 1 in Appendix D (pp.68) of JIS X0510:2004.

Definition at line 354 of file qrspec.c.

Referenced by QRspec_getVersionPattern().