47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
namespace Gma.QrCodeNet.Encoding.DataEncodation;
|
|
|
|
public abstract class EncoderBase
|
|
{
|
|
internal EncoderBase()
|
|
{
|
|
}
|
|
|
|
protected virtual int GetDataLength(string content) => content.Length;
|
|
|
|
/// <summary>
|
|
/// Returns the bit representation of input data.
|
|
/// </summary>
|
|
internal abstract BitList GetDataBits(string content);
|
|
|
|
/// <summary>
|
|
/// Returns bit representation of Modevalue.
|
|
/// </summary>
|
|
/// <remarks>See Chapter 8.4 Data encodation, Table 2 — Mode indicators</remarks>
|
|
internal BitList GetModeIndicator()
|
|
{
|
|
BitList modeIndicatorBits = new()
|
|
{
|
|
{ 0001 << 2, 4 }
|
|
};
|
|
return modeIndicatorBits;
|
|
}
|
|
|
|
internal BitList GetCharCountIndicator(int characterCount, int version)
|
|
{
|
|
BitList characterCountBits = new();
|
|
int bitCount = GetBitCountInCharCountIndicator(version);
|
|
characterCountBits.Add(characterCount, bitCount);
|
|
return characterCountBits;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Defines the length of the Character Count Indicator,
|
|
/// which varies according to the mode and the symbol version in use
|
|
/// </summary>
|
|
/// <returns>Number of bits in Character Count Indicator.</returns>
|
|
/// <remarks>
|
|
/// See Chapter 8.4 Data encodation, Table 3 — Number of bits in Character Count Indicator.
|
|
/// </remarks>
|
|
protected abstract int GetBitCountInCharCountIndicator(int version);
|
|
}
|