📄 deskjet.c
字号:
print_hist_image(printer, hist)
FILE *printer;
long hist[];
{
char c, d;
int i, j, k, limit;
long max;
d = 0;
c = 170;
/********************************
*
* First scale the histogram
*
*********************************/
max = 0;
for(i=0; i<64; i++)
if(hist[i] > max) max = hist[i];
printf("\n\n\nmax is %d", max);
if(max > 200){
for(i=0; i<64; i++){
hist[i] = hist[i]*200/max;
printf("\nhist[i] = %d", hist[i]);
}
}
/********************************
*
* Second print it
*
*********************************/
for(i=0; i<64; i++){
printf("\n\t\thist row %d hist[i]=%d", i, hist[i]);
/* print the line 8 times */
for(k=0; k<8; k++){
end_graphics_mode(printer);
select_300_dpi_resolution(printer);
set_raster_width(printer);
start_raster_graphics(printer);
select_full_graphics_mode(printer);
set_horizontal_offset(printer);
/* this prints 200 bytes so print 200 */
putc(ESCAPE, printer);
putc('*', printer);
putc('b', printer);
putc('2', printer);
putc('0', printer);
putc('0', printer);
putc('W', printer);
if(hist[i] >= 200) hist[i] = 200;
limit = 200 - hist[i];
if(hist[i] == 0) putc(c, printer);
for(j=0; j<hist[i]; j++)
putc(c, printer);
for(j=0; j<limit; j++)
putc(d, printer);
} /* ends loop over k */
} /* ends loop over i */
} /* print_hist_image */
select_proportional_font(printer)
FILE *printer;
{
putc(ESCAPE, printer);
putc('(', printer);
putc('0', printer);
putc('U', printer);
putc(ESCAPE, printer);
putc('(', printer);
putc('s', printer);
putc('0', printer);
putc('u', printer);
putc('1', printer);
putc('p', printer);
putc('1', printer);
putc('2', printer);
putc('v', printer);
putc('0', printer);
putc('s', printer);
putc('0', printer);
putc('b', printer);
putc('5', printer);
putc('t', printer);
putc('2', printer);
putc('Q', printer);
}
select_full_graphics_mode(printer)
FILE *printer;
{
putc(ESCAPE, printer);
putc('*', printer);
putc('b', printer);
putc('0', printer);
putc('M', printer);
}
set_horizontal_offset(printer)
FILE *printer;
{
putc(ESCAPE, printer);
putc('*', printer);
putc('b', printer);
putc('4', printer);
putc('9', printer);
putc('6', printer);
putc('X', printer);
}
end_graphics_mode(printer)
FILE *printer;
{
putc(ESCAPE, printer);
putc('*', printer);
putc('r', printer);
putc('B', printer);
}
set_raster_width(printer)
FILE *printer;
{
putc(ESCAPE, printer);
putc('*', printer);
putc('r', printer);
putc('2', printer);
putc('2', printer);
putc('0', printer);
putc('0', printer);
putc('S', printer);
}
start_raster_graphics(printer)
FILE *printer;
{
putc(ESCAPE, printer);
putc('*', printer);
putc('r', printer);
putc('0', printer);
putc('A', printer);
}
select_300_dpi_resolution(printer)
FILE *printer;
{
putc(ESCAPE, printer);
putc('*', printer);
putc('t', printer);
putc('3', printer);
putc('0', printer);
putc('0', printer);
putc('R', printer);
}
print_byte_pattern(printer, b)
FILE *printer;
char b;
{
char x;
x = 1;
putc(ESCAPE, printer);
putc('*', printer);
putc('b', printer);
putc('1', printer);
putc('W', printer);
putc(b, printer);
}
print_bytes(printer, buffer)
FILE *printer;
char buffer[];
{
int i;
putc(ESCAPE, printer);
putc('*', printer);
putc('b', printer);
putc('2', printer);
putc('0', printer);
putc('0', printer);
putc('W', printer);
for(i=0; i<200; i++){
putc(buffer[i], printer);
}
} /* ends print_bytes */
print_100_bytes(printer, buffer)
FILE *printer;
char buffer[];
{
int i;
putc(ESCAPE, printer);
putc('*', printer);
putc('b', printer);
putc('1', printer);
putc('0', printer);
putc('0', printer);
putc('W', printer);
for(i=0; i<100; i++){
putc(buffer[i], printer);
}
} /* ends print_100_bytes */
print_original_100_row(printer, short_row)
FILE *printer;
short short_row[200];
{
char row[8][200];
char c[200], response[80];
int i, j, k;
short value;
for(i=0; i<200; i++){
value = short_row[i];
if(value > 63) value = 63;
if(value < 0) value = 0;
if(value < 32)
value = 32 + (32-value) - 1;
else
if(value > 32)
value = 32 - (value-32) - 1;
for(j=0; j<8; j++){
row[j][i] = patterns[value][j];
}
}
for(i=0; i<8; i++){
for(j=0; j<200; j++){
c[j] = row[i][j];
}
set_horizontal_offset(printer);
print_bytes(printer, c);
}
} /* ends print_original_100_row */
print_result_100_row(printer, short_row)
FILE *printer;
short short_row[200];
{
char row[8][200];
char c[200], response[80];
int i, j, k;
short value;
for(i=0; i<200; i++){
value = short_row[i];
if(short_row[i] == 41) value = 63;
if(short_row[i] == 69) value = 20;
if(short_row[i] == 97) value = 40;
/***printf(" v=%d ", value);**/
for(j=0; j<8; j++){
row[j][i] = patterns[value][j];
}
}
for(i=0; i<8; i++){
for(j=0; j<200; j++){
c[j] = row[i][j];
/*printf(" c[%d]=%x ", j, c[j]);*/
}
printf("\ncalling print bytes i=%d j=%d", i, j);
set_horizontal_offset(printer);
print_bytes(printer, c);
}
} /* ends print_result_100_row */
perform_histogram_equalization(image, histogram)
short image[ROWS][COLS];
unsigned long histogram[];
{
int area,
i,
j,
k;
unsigned long sum,
sum_of_h[256];
double constant;
sum = 0;
for(i=0; i<256; i++){
sum = sum + histogram[i];
sum_of_h[i] = sum;
}
/* constant = new # of gray levels div by area */
constant = 64.0/20000.0;
for(i=0; i<ROWS; i++){
for(j=0; j<COLS; j++){
k = image[i][j];
image[i][j] = sum_of_h[k] * constant;
}
}
} /* ends perform_histogram_equalization */
zero_long_histogram(histogram)
unsigned long histogram[];
{
int i;
for(i=0; i<256; i++)
histogram[i] = 0;
} /* ends zero_long_histogram */
calculate_long_histogram(image, histogram)
short image[ROWS][COLS];
unsigned long histogram[];
{
int i,j,k;
for(i=0; i<ROWS; i++){
for(j=0; j<COLS; j++){
k = image[i][j];
histogram[k] = histogram[k] + 1;
}
}
} /* ends calculate_long_histogram */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -