⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccputstring.c

📁 image processing including fourier,wavelet,segmentation etc.
💻 C
字号:
/*--------------------------- MegaWave2 Module -----------------------------*//* mwcommandname = {ccputstring};author = {"Lionel Moisan"};version = {"1.0"};function = {"Put in PLACE a string (read from standart input) on a Ccimage"};usage = {   'r':r->r[0,100]  "select dilatation radius for background",   'c':[c=999]->c   "fg color (RGB, 1 decimal digit per channel, default 999)",   'C':[C=0]->C     "bg color (RGB, 1 decimal digit per channel, default 0)",   in->in           "input Ccimage",   x->x             "string x position (topleft)",   y->y             "string y position (topleft)",   out<-ccputstring "output Ccimage (modified input)",   notused->str     "string (internal call only)"};*/#include <stdio.h>#include <strings.h>#include  "mw.h"extern Curve disc();#define FONTWIDTH 7#define FONTHEIGHT 14char *font[98]={"0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000036000000018050000","00000002004120:10<8<0808804000000002004120:792920810415000000004","004240:95312101040>100000004004007>94>12002020410000000800400145","020<002020>10000000800400143841900202157<01?8008004007>147250020","204100000010000002894<:200202001000000100040028954:6001040010600","04200040028793190010400002000>2000000001000000088000020004400000","0000000000050000040000400000000000000000000000000000000000000000","00000000000000003021>3<09?8>7>78?0000000003<48621421901142850800","0080204284:2142290214485084001001042842010229?20044908>1821?8804","842021<490:>08311841840004088420202480;10848>8000800020884204028","80:108840800041?84088420842?=0:108850841820008004821042090:10885","10>08100100830?;?3<08?1>0878>04080802008000000000000000000010000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000003863>3<?9?;?3<84?8742810:13<449114245020","428420244819:1429=0914245020428420248819;142:5091404502040842025","0816;142:509>4045>3<40?<20260816:942:5?9140450204>8420250810:542",":50914045020428420248810:3429=0914245020428422244810:34241091424","5020468422242810:1423=0;>3<?9?:03:84?9<42?=0:13<0000000000000000","0000000000000000000000000000000000000000000000000000000000000000","000000000000000000000001>81>0<00?8?3>3=?=0:1428513?108021200850:","142210:14285101104022100850:142210:14249102104020000850:140210:1","4248:04102020000850:130210924230:04102020000?90;>0<210925:304081","0202000081<:402210925:48410101020000812:2422108<6648410101020000","811:1422108<668442010082000080?213<20?0<428443?10082000000100000","0000000000010042000000080000000000000001>05>007>0000000000000000","0000000000001800000000000000000000000000100200004006008020240300","00001002000040090080202401000000080200004008008000040100000000?2",">3<74?083:;86064411:2>3<010;1428=0;>44<4202481153142003:14085088","448420250115214200<:14085?884484202701152142010:1408500838842024","81152142011;1428=088208420244115214200>:>3<74?085<84?:2427=1213<","00000000000042000220000000000000000000003<0001<00000000000000000","0000000000000000000000000000000000000000621810000000000200000000","0000820429000000000200000000000082042500000000020000000000008204","0200;8>:>3<?90:244850;?082040000<51;142210:24485082082040000850:","120210:25449084102020000850:018210945431088082040000850:00421094","5449188082040000<51:042251885484>90082040000;8>:03<18>8828840;?0","8204000080080000000000010800820400008008000000000000?00062180000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","0000000000000000000000000000000000000000000000000000000000000000","000000000000000000000000000000000000000000000000000000003<90?0>0","00001>0000400000108842910910000021?0004001800908200168?000003=00","00008248460818019910000033000041?2079?8824018930:000330000429204","8200420188=140003=000042878482002401880280003300004282079?881801","99?51?3<33000042820842080401680281003300004297800208420108014100","21000041?24002083<00?000:1001>0000008000000000000000000000000000","0000000000000000000000000000000000000000000000000000600183010000","000000000000000090024482001>000080<00408310090004084002:00018120","0<58890860008308002:000081200489120800010080002:000080<504890<00","00420480112:10008002850:34080043<300111:000081>14245090801?00000","110:00000000:2<6930800400000110:0000000145489508004000001;0:0000","000289=1270401?00000150:002000050853814200000000100:002000000000","004200000000100>004000000000003<4010<1448600004010<0020104003061","228486000030612241860:1400000000001?3<000000000000003060<1830628","42?=?;?7>7<?9?3>4891224489484281020401020408850:142850<840810204","01020408850:142850?>4081020401020408?=?;?7>?=?<840?9?3>7<1020408","850:142850<84081020401020408850:142850<84281020401020408850:1428","50<84281020401020408850:142850<?3<?=?;?7>7<?9?3>0000000000000800","0000000000000000000000001000000000000000005100430500000480218001","000000:0<1848:12000460<244860000?00000000000007800000010:0188989",">3<78?1>008=0:142850:024858:142850:100950:1428513>24854:142850:1","82950:1428492124>54:142850:144950:14284:2138852:142850:128:50:14","28462124852:142850:110:50:1428442122852:142850:128:50:1428443>22","891:142850:144<50:1428442022?119>3<78?1>8278?1>3<784207<00000000","0000008000000000000000000000000000800000000000000000000000000000","00000000000040100000040000401000020100002020<1400:00002020<00102","0<001041228484000010412240841214000000000000000000000000000078?1",">3<78?3>3<78?1>3<3060<18850:142850<942850:14210204081<3870>1<399","40850:142102040864<993264<:?40?=?;?7>1020408850:142850<840810204","010204088=1:3468=1<942850:142102040874>9=3:74>;>3<78?1>3<7<?9?3>","0000000000000800000000000000000000000000100000000000000000000000","0000000000000000000050010040000000000000000000002050808305000000","80218001200050:041048:120004404244822024080000000000000820800004","20007971>3<78?1>00790:142850:>42898:142850:100950:142850;142890:","142850:130950:142848:122890:142850:100:50:1428492124890:142850:1","?<:50:1428452114890:142850:100<51:3468<7311<7109>3<78?1>3078>9=3",":7422>08000000000000008000000012204800000000000000800000000<2030"};int getdotfont(v,x,y)     int v,x,y;{  int adr,bit;  adr = (v/16)*16*FONTWIDTH*FONTHEIGHT+(v%16)*FONTWIDTH+y*16*FONTWIDTH+x;  bit = 3 - (adr & 3);  adr /= 4;  return ((font[adr/64][adr%64]>>bit)&1);}/*------------------------------ MAIN MODULE ------------------------------*/Ccimage ccputstring(in,x,y,c,C,r,str)     Ccimage in;     int x,y;     int *c,*C;     float *r;     unsigned char *str;{  int nx,ny,cx,cy,sx,sy,dx,dy,adr,i,v,adr2;  Curve thedisc;  Point_curve p;  nx = in->ncol; ny = in->nrow;  if (r) thedisc = disc(*r,NULL);  /* get string */  if (!str) {    str = malloc(1001*sizeof(char));    for (i=0;i<1000 && ((v=getchar())!=EOF);i++) str[i] = v;    if (v!=EOF)       mwerror(WARNING,0,"string too long: only 1000 characters kept.");    str[i]=(char)0;  }  /* put background if necessary */  if (r && *r!=0) {    cx = x; cy = y;    for (i=0;i<strlen(str);i++) {      v = (int)str[i];      if (v==10) {	cx = x;	cy += FONTHEIGHT;      } else {	for (dx=0;dx<FONTWIDTH;dx++)	  for (dy=0;dy<FONTHEIGHT;dy++)	    if (cx+dx>=0 && cx+dx<nx && cy+dy>=0 && cy+dy<ny) {	      adr = (cy+dy)*nx+cx+dx;	      if (getdotfont(v,dx,dy)) 		for (p=thedisc->first;p;p=p->next) 		  if (cx+dx+p->x>=0 && cx+dx+p->x<nx 		      && cy+dy+p->y>=0 && cy+dy+p->y<ny) {		    adr2 = (cy+dy+p->y)*nx+cx+dx+p->x;		    in->red[adr2]   = (((*C) / 100) * 255)/9;		    in->green[adr2] = ((((*C) /10) %10)* 255)/9;		    in->blue[adr2]  = (((*C) %10)* 255)/9;		  }	    }	cx += FONTWIDTH;      }    }  }  /* put string */  cx = x; cy = y;  for (i=0;i<strlen(str);i++) {    v = (int)str[i];    if (v==10) {      cx = x;      cy += FONTHEIGHT;    } else {      for (dx=0;dx<FONTWIDTH;dx++)	for (dy=0;dy<FONTHEIGHT;dy++)	  if (cx+dx>=0 && cx+dx<nx && cy+dy>=0 && cy+dy<ny) {	    adr = (cy+dy)*nx+cx+dx;	    if (getdotfont(v,dx,dy)) {	      in->red[adr] = (((*c) / 100) * 255)/9;	      in->green[adr] = ((((*c) /10) %10)* 255)/9;	      in->blue[adr] = (((*c) %10)* 255)/9;	    } else if (!r) {	      in->red[adr] = (((*C) / 100) * 255)/9;	      in->green[adr] = ((((*C) /10) %10)* 255)/9;	      in->blue[adr] = (((*C) %10)* 255)/9;	    }	  }      cx += FONTWIDTH;    }  }    return(in);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -