CAPS Universe documentation  1.0.4
All you need to know to be successful
encode_method_1027.h
Go to the documentation of this file.
1#pragma once
2
3/*
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 *
6 * (c) 2020 Juergen Borleis <projects@caps-printing.org>
7 *
8 * This library is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License as published by the Free
10 * Software Foundation; either version 2 of bthe License, or (at your option)
11 * any later version.
12 */
13
14#include <stdint.h>
15#ifndef ALGO_TESTING
16# include <libcapsbase.h>
17#endif
18
19#include <stdbool.h>
20
158 uint16_t border_left;
159 uint16_t border_top;
160 uint8_t line_cnt;
161 uint16_t word_cnt;
162 uint16_t data[0];
163} __packed;
164
171{
172 uint16_t data_size;
174} __packed;
175
181#define C1027_LINE_LENGTH 640
182
186 size_t idx;
187};
188
198 uint16_t *out;
199 size_t avail_cnt;
200 size_t bused_cnt;
201 size_t blines;
205 unsigned top;
206 unsigned left;
207 unsigned pcnt;
208 size_t llength;
209};
218#define C1027_MAX_LINES_IN_ONE_BAND 64
227#define C1027_MAX_WORDS_IN_ONE_BLOCK 0x7FFC
228
234void hl_c1027_block_init(struct cm1027_block *block, unsigned llength) __nonnull();
239void hl_c1027_block_exit(struct cm1027_block *block) __nonnull();
250bool hl_c1027_line_check_if_empty(unsigned cnt, const uint16_t line[cnt]) __nonnull() __pure;
260void hl_c1027_line_encode(struct cm1027_line *cline, unsigned cnt, const uint16_t line[cnt], const uint16_t *prev) __nonnull((1,3));
277int hl_c1027_block_line_add(struct cm1027_block *block, const struct cm1027_line *line, FILE *outstream) __nonnull();
291int hl_c1027_block_line_twin_add(struct cm1027_block *block, const struct cm1027_line *line, unsigned cnt, FILE *outstream) __nonnull();
317int hl_c1027_block_flush(struct cm1027_block *block, FILE *outstream) __nonnull();
#define C1027_LINE_LENGTH
Definition: encode_method_1027.h:181
void hl_c1027_block_init(struct cm1027_block *block, unsigned llength)
Definition: encode_method_1027.c:509
void hl_c1027_line_encode(struct cm1027_line *cline, unsigned cnt, const uint16_t line[cnt], const uint16_t *prev)
Definition: encode_method_1027.c:286
int hl_c1027_block_flush(struct cm1027_block *block, FILE *outstream)
Definition: encode_method_1027.c:383
void hl_c1027_block_exit(struct cm1027_block *block)
Definition: encode_method_1027.c:523
int hl_c1027_block_line_twin_add(struct cm1027_block *block, const struct cm1027_line *line, unsigned cnt, FILE *outstream)
Definition: encode_method_1027.c:479
int hl_c1027_block_line_add(struct cm1027_block *block, const struct cm1027_line *line, FILE *outstream)
Definition: encode_method_1027.c:448
bool hl_c1027_line_check_if_empty(unsigned cnt, const uint16_t line[cnt])
Definition: encode_method_1027.c:232
#define __packed
Definition: libcapsbase.h:103
#define __nonnull(params)
Definition: libcapsbase.h:84
#define __pure
Definition: libcapsbase.h:124
Basic API for everything else of the CAPS universe.
Brother 1027 encoding method data block's binary header.
Definition: encode_method_1027.h:157
uint8_t line_cnt
Definition: encode_method_1027.h:160
uint16_t data[0]
Definition: encode_method_1027.h:162
uint16_t border_left
Definition: encode_method_1027.h:158
uint16_t word_cnt
Definition: encode_method_1027.h:161
uint16_t border_top
Definition: encode_method_1027.h:159
Brother 1027 encoding method block's binary header.
Definition: encode_method_1027.h:171
struct cm1027_block_data_header data
Definition: encode_method_1027.h:173
uint16_t data_size
Definition: encode_method_1027.h:172
Collected line data to process a Brother 1027 method print data block.
Definition: encode_method_1027.h:197
int block_started
Definition: encode_method_1027.h:203
size_t blines
Definition: encode_method_1027.h:201
unsigned top
Definition: encode_method_1027.h:205
unsigned pcnt
Definition: encode_method_1027.h:207
size_t llength
Definition: encode_method_1027.h:208
size_t bused_cnt
Definition: encode_method_1027.h:200
uint16_t * out
Definition: encode_method_1027.h:198
unsigned left
Definition: encode_method_1027.h:206
size_t avail_cnt
Definition: encode_method_1027.h:199
Brother 1027 method encoded line data.
Definition: encode_method_1027.h:184
size_t idx
Definition: encode_method_1027.h:186
uint16_t data[640]
Definition: encode_method_1027.h:185