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

📄 ccctrs.c

📁 Computing 2D Skeleton
💻 C
📖 第 1 页 / 共 4 页
字号:
            if (check[(k+q)%H]>0) /* is local max */            {              flag = 1;              if (slope[(k+q)%H]>now)              {                now = slope[(k+q)%H];                k1 = (k+q)%H; /* next ray */              }            }          }                    if (flag>0)          {            flag = 0;            grx = (ii[k0]*ii[k1]+jj[k0]*jj[k1])/(d[k0]*d[k1]);            grx = ABS(1+grx)/2;            if (grx>0.0001) grx = sqrt((double) grx);/*if (mk==109)*//* if (i==245) if (j==99) *//* printf("k0 %d k1=%d  grx = %f grmx = %f\n",k0,k1,grx,grmn);*/             if (grx<=grmn)            {              grmn=grx;              t1=k0;              t2=k1;            }            flag = 0;            k0 = k1;          }        }       }       k0=t1; k1=t2;/*if (mk==109)*//* if (i==245) if (j==99) */  /* printf("at (%d %d) k0=%d,k1=%d\n",i,j,k0,k1); */             v0 = v[i][j];          m = (int) (i + (ii[k0])*v0/d[k0]);          n = (int) (j + (jj[k0])*v0/d[k0]);          k = (int) (v0/d[k0]+0.5);          k = MIN(k,v0-1);/*if (mk==109)*//*if (i==245) if (j==99) */  /*{ printf("ii (%d %d), v0=%f d=%f\n",ii[k0],jj[k0],v0,d[k0]);printf("m,n = (%d %d),nbhd=%d\n",m,n,k);}*/           zm = xdim+ydim;          zm *= zm;          flag = 0;          i2 = -1; j2 = -1;          for (p=m-k;p<m+k+1;p++) for (q=n-k;q<n+k+1;q++)          if (bdry[p][q]>0)           {            z = (p-i)*(p-i)+(q-j)*(q-j);            if (z<zm)            {              zm = z;              i2 = p; j2 = q;              flag = 1;            }          } /*if (mk==109)*//*if (i==245) if (j==99) */ /* printf("flag=%d, bdrypt (%d %d)\n",flag,i2,j2); */          if (flag>0)          {            k0 = k1;            i1 = i2; j1 = j2;            m = (int) (i + (ii[k0])*v0/d[k0]);            n = (int) (j + (jj[k0])*v0/d[k0]);            k = (int) (v0/d[k0]+0.5);            k = MIN(k,v0-1);/*if (mk==109)*//*if (i==245) if (j==99) *//*{ printf("ii (%d %d), v0=%f d=%f\n",ii[k0],jj[k0],v0,d[k0]);printf("m,n = (%d %d),nbhd=%d\n",m,n,k); } */            zm = xdim+ydim;            zm *= zm;            flag = 0;            for (p=m-k;p<m+k+1;p++) for (q=n-k;q<n+k+1;q++)            if (bdry[p][q]>0)            {              z = (p-i)*(p-i)+(q-j)*(q-j);              if (z<zm)              {                zm = z;                i2 = p; j2 = q;                flag = 1;              }            }/*if (mk==109)*//*if (i==245) if (j==99) *//* printf("flag=%d, bdrypt (%d %d)\n",flag,i2,j2);*/          }      }            if (h==1)      {         int bdry_i[200],bdry_j[200];         int count;         float a1,b1,d,dist[200];             count=0;         flag = 0;         d=1000;         p=pic[i][j];         for (m=i-5;m<i+6;m++) for (n=j-5;n<j+6;n++)         if (bdry[m][n]>0) if (pic[m][n]==p)         {            bdry_i[count]=m; bdry_j[count]=n;            z=(i-m)*(i-m)+(j-n)*(j-n);            z=sqrt((double) z);            dist[count]=z;            if (z<d) {d=z; k=count;}            count++;/*if (mk==109)*//*  if (i==171) if (j==300) */ /*  printf("%d %d %f\n",m,n,z);*/          }                  zm=1;         i1=bdry_i[k];         j1=bdry_j[k];         a1=(i1-i)/dist[k];         b1=(j1-j)/dist[k];         if (count>1) for (p=0;p<count;p++)         {           m=bdry_i[p]; n=bdry_j[p];           z = (a1*(m-i)+b1*(n-j))/dist[p];           if (z<zm) {i2=m; j2=n; zm=z;}          }         if (zm<1) flag=1;/*if (mk==109)*//* if (i==171) if (j==300) *//* printf(" flag=%d bdrypts (%d %d) (%d %d) \n",flag,i1,j1,i2,j2); */      }         if (flag>0)      connect(i1,j1,i2,j2,pic[i][j]);             for (m=i-1;m<i+2;m++) for (n=j-1;n<j+2;n++)      if ((m!=i)||(n!=j))      if (sk[m][n]==1) if (mark[0][m][n]==mk)         endpts[m][n]=0;          }}          void output_results() {     int i,j;               for (i=0;i<ydim;i++) for (j=0;j<xdim;j++)     {       if (bdry[i][j]>0) outsk[i][j]=0;  /*     else if (ctrs[i][j]==1) outsk[i][j]=0; */       else if (ctrs[i][j]==2) outsk[i][j]=0;   /*    else if (sk[i][j]==2) outsk[i][j]=224;        else if (sk[i][j]==1) outsk[i][j]=128;   */           else outsk[i][j]=255;      }          strcpy(outname, inname);     strcat(outname,"hprb");     sprintf(buf1,"%d", upper_threshold);      sprintf(buf2,"%d",NN);     strcat(outname,buf1);     strcat(outname,"_");     strcat(outname,buf2);      printf("Writing %s\n",outname);     if ((outfile = fopen(outname,"w+")) == NULL)     {	   printf("Cannot create %s\n",outname);	   exit(1);     }     fwrite(outsk,sizeof(unsigned char),xdim*ydim,outfile);     fclose(outfile);              /*     for (i=0;i<ydim;i++) for (j=0;j<xdim;j++)     {       if (bdry[i][j]>0) outsk[i][j]=0;       else if (sk[i][j]==1) outsk[i][j]=128;              else outsk[i][j]=255;      }          strcpy(outname, inname);     strcat(outname,"rbn_axes");     sprintf(buf1,"%d",upper_threshold);     sprintf(buf2,"%d",middle_threshold);     sprintf(buf,"%d",N);     strcat(outname,buf);     strcat(outname,"-");     strcat(outname,buf1);     strcat(outname,"-");     strcat(outname,buf2);     printf("Writing %s\n",outname);     if ((outfile = fopen(outname,"w+")) == NULL)     {	   printf("Cannot create %s\n",outname);	   exit(1);     }     fwrite(outsk,sizeof(unsigned char),xdim*ydim,outfile);      fclose(outfile);     *//*     for (i=0;i<ydim;i++) for (j=0;j<xdim;j++)     {       if (bdry[i][j]>0) outsgmt[i][j]=0;       else if (sgmt[i][j]>0) outsgmt[i][j]=128;        else outsgmt[i][j]=255;      }              strcpy(outname, inname);     strcat(outname,"prtrns");     sprintf(buf1,"%d",upper_threshold);     sprintf(buf2,"%d",middle_threshold);     sprintf(buf,"%d",N);     strcat(outname,buf);     strcat(outname,"-");     strcat(outname,buf1);     strcat(outname,"-");     strcat(outname,buf2);     printf("Writing %s\n",outname);     if ((outfile = fopen(outname,"w+")) == NULL)     {	   printf("Cannot create %s\n",outname);	   exit(1);     }     fwrite(outsgmt,sizeof(unsigned char),xdim*ydim,outfile);      fclose(outfile); */ } void run(void){   int i,j,m,n,count=48;   char str[100][128];   char sstr[100][128];   time_t systime;   	      SIOUXSettings.asktosaveonclose = 0;   /* SIOUXSettings.showstatusline = 1; */	      systime = time(NULL);	      puts(ctime(&systime));/*   strcpy(str[0],"::CorpusCallosum:ccSchzSchz:1030_2_128.buchar");   strcpy(str[1],"::CorpusCallosum:ccSchzSchz:1033_2_128.buchar");   strcpy(str[2],"::CorpusCallosum:ccSchzSchz:1035_2_128.buchar");   strcpy(str[3],"::CorpusCallosum:ccSchzSchz:1036_2_128.buchar");   strcpy(str[4],"::CorpusCallosum:ccSchzSchz:1037_2_128.buchar");   strcpy(str[5],"::CorpusCallosum:ccSchzSchz:1038_4_128.buchar");   strcpy(str[6],"::CorpusCallosum:ccSchzSchz:468_6_128.buchar");   strcpy(str[7],"::CorpusCallosum:ccSchzSchz:474_4_128.buchar");   strcpy(str[8],"::CorpusCallosum:ccSchzSchz:476_6_128.buchar");   strcpy(str[9],"::CorpusCallosum:ccSchzSchz:479_6_128.buchar");   strcpy(str[10],"::CorpusCallosum:ccSchzSchz:491_4_128.buchar");   strcpy(str[11],"::CorpusCallosum:ccSchzSchz:510_4_128.buchar");   strcpy(str[12],"::CorpusCallosum:ccSchzSchz:511_4_128.buchar");   strcpy(str[13],"::CorpusCallosum:ccSchzSchz:519_4_128.buchar");   strcpy(str[14],"::CorpusCallosum:ccSchzSchz:578_4_128.buchar");   strcpy(str[15],"::CorpusCallosum:ccSchzSchz:579_4_128.buchar");   strcpy(str[16],"::CorpusCallosum:ccSchzSchz:580_4_128.buchar");   strcpy(str[17],"::CorpusCallosum:ccSchzSchz:597_4_128.buchar");   strcpy(str[18],"::CorpusCallosum:ccSchzSchz:614_4_128.buchar");   strcpy(str[19],"::CorpusCallosum:ccSchzSchz:615_4_128.buchar");   strcpy(str[20],"::CorpusCallosum:ccSchzSchz:631_4_128.buchar");   strcpy(str[21],"::CorpusCallosum:ccSchzSchz:635_5_128.buchar");   strcpy(str[22],"::CorpusCallosum:ccSchzSchz:647_4_128.buchar");   strcpy(str[23],"::CorpusCallosum:ccSchzSchz:672_4_128.buchar");   strcpy(str[24],"::CorpusCallosum:ccSchzSchz:677_4_128.buchar");   strcpy(str[25],"::CorpusCallosum:ccSchzSchz:686_4_128.buchar");   strcpy(str[26],"::CorpusCallosum:ccSchzSchz:689_4_128.buchar");   strcpy(str[27],"::CorpusCallosum:ccSchzSchz:690_4_128.buchar");   strcpy(str[28],"::CorpusCallosum:ccSchzSchz:772_4_128.buchar");   strcpy(str[29],"::CorpusCallosum:ccSchzSchz:789_4_128.buchar");   strcpy(str[30],"::CorpusCallosum:ccSchzSchz:790_4_128.buchar");   strcpy(str[31],"::CorpusCallosum:ccSchzSchz:791_4_128.buchar");   strcpy(str[32],"::CorpusCallosum:ccSchzSchz:792_4_128.buchar");   strcpy(str[33],"::CorpusCallosum:ccSchzSchz:793_4_128.buchar");   strcpy(str[34],"::CorpusCallosum:ccSchzSchz:853_4_128.buchar");         strcpy(sstr[0],"::CorpusCallosum:ccSchzSchz:1030");   strcpy(sstr[1],"::CorpusCallosum:ccSchzSchz:1033");   strcpy(sstr[2],"::CorpusCallosum:ccSchzSchz:1035");   strcpy(sstr[3],"::CorpusCallosum:ccSchzSchz:1036");   strcpy(sstr[4],"::CorpusCallosum:ccSchzSchz:1037");   strcpy(sstr[5],"::CorpusCallosum:ccSchzSchz:1038");   strcpy(sstr[6],"::CorpusCallosum:ccSchzSchz:468");   strcpy(sstr[7],"::CorpusCallosum:ccSchzSchz:474");   strcpy(sstr[8],"::CorpusCallosum:ccSchzSchz:476");   strcpy(sstr[9],"::CorpusCallosum:ccSchzSchz:479");   strcpy(sstr[10],"::CorpusCallosum:ccSchzSchz:491");   strcpy(sstr[11],"::CorpusCallosum:ccSchzSchz:510");   strcpy(sstr[12],"::CorpusCallosum:ccSchzSchz:511");   strcpy(sstr[13],"::CorpusCallosum:ccSchzSchz:519");   strcpy(sstr[14],"::CorpusCallosum:ccSchzSchz:578");   strcpy(sstr[15],"::CorpusCallosum:ccSchzSchz:579");   strcpy(sstr[16],"::CorpusCallosum:ccSchzSchz:580");   strcpy(sstr[17],"::CorpusCallosum:ccSchzSchz:597");   strcpy(sstr[18],"::CorpusCallosum:ccSchzSchz:614");   strcpy(sstr[19],"::CorpusCallosum:ccSchzSchz:615");   strcpy(sstr[20],"::CorpusCallosum:ccSchzSchz:631");   strcpy(sstr[21],"::CorpusCallosum:ccSchzSchz:635");   strcpy(sstr[22],"::CorpusCallosum:ccSchzSchz:647");   strcpy(sstr[23],"::CorpusCallosum:ccSchzSchz:672");   strcpy(sstr[24],"::CorpusCallosum:ccSchzSchz:677");   strcpy(sstr[25],"::CorpusCallosum:ccSchzSchz:686");   strcpy(sstr[26],"::CorpusCallosum:ccSchzSchz:689");   strcpy(sstr[27],"::CorpusCallosum:ccSchzSchz:690");   strcpy(sstr[28],"::CorpusCallosum:ccSchzSchz:772");   strcpy(sstr[29],"::CorpusCallosum:ccSchzSchz:789");   strcpy(sstr[30],"::CorpusCallosum:ccSchzSchz:790");   strcpy(sstr[31],"::CorpusCallosum:ccSchzSchz:791");   strcpy(sstr[32],"::CorpusCallosum:ccSchzSchz:792");   strcpy(sstr[33],"::CorpusCallosum:ccSchzSchz:793");   strcpy(sstr[34],"::CorpusCallosum:ccSchzSchz:853"); */           strcpy(str[0],"::CorpusCallosum:ccSchzNorms:1019_2_128.buchar");   strcpy(str[1],"::CorpusCallosum:ccSchzNorms:1039_4_128.buchar");   strcpy(str[2],"::CorpusCallosum:ccSchzNorms:1042_2_128.buchar");   strcpy(str[3],"::CorpusCallosum:ccSchzNorms:1044_2_128.buchar");   strcpy(str[4],"::CorpusCallosum:ccSchzNorms:1045_2_128.buchar");   strcpy(str[5],"::CorpusCallosum:ccSchzNorms:1046_2_128.buchar");   strcpy(str[6],"::CorpusCallosum:ccSchzNorms:1050_3_128.buchar");   strcpy(str[7],"::CorpusCallosum:ccSchzNorms:1069_2_128.buchar");   strcpy(str[8],"::CorpusCallosum:ccSchzNorms:1077_2_128.buchar");   strcpy(str[9],"::CorpusCallosum:ccSchzNorms:1110_2_128.buchar");   strcpy(str[10],"::CorpusCallosum:ccSchzNorms:1112_2_128.buchar");   strcpy(str[11],"::CorpusCallosum:ccSchzNorms:1120_2_128.buchar");   strcpy(str[12],"::CorpusCallosum:ccSchzNorms:1134_2_128.buchar");   strcpy(str[13],"::CorpusCallosum:ccSchzNorms:1150_2_128.buchar");   strcpy(str[14],"::CorpusCallosum:ccSchzNorms:1151_2_128.buchar");   strcpy(str[15],"::CorpusCallosum:ccSchzNorms:1152_2_128.buchar");   strcpy(str[16],"::CorpusCallosum:ccSchzNorms:1153_2_128.buchar");   strcpy(str[17],"::CorpusCallosum:ccSchzNorms:1154_2_128.buchar");   strcpy(str[18],"::CorpusCallosum:ccSchzNorms:1155_2_128.buchar");   strcpy(str[19],"::CorpusCallosum:ccSchzNorms:1156_2_128.buchar");   strcpy(str[20],"::CorpusCallosum:ccSchzNorms:1157_2_128.buchar");   strcpy(str[21],"::CorpusCallosum:ccSchzNorms:1158_2_128.buchar");   strcpy(str[22],"::CorpusCallosum:ccSchzNorms:1159_2_128.buchar");   strcpy(str[23],"::CorpusCallosum:ccSchzNorms:1182_3_128.buchar");   strcpy(str[24],"::CorpusCallosum:ccSchzNorms:521_4_130.buchar");   strcpy(str[25],"::CorpusCallosum:ccSchzNorms:522_4_128.buchar");   strcpy(str[26],"::CorpusCallosum:ccSchzNorms:538_4_128.buchar");   strcpy(str[27],"::CorpusCallosum:ccSchzNorms:546_4_128.buchar");   strcpy(str[28],"::CorpusCallosum:ccSchzNorms:594_5_128.buchar");   strcpy(str[29],"::CorpusCallosum:ccSchzNorms:595_4_128.buchar");   strcpy(str[30],"::CorpusCallosum:ccSchzNorms:632_4_128.buchar");   strcpy(str[31],"::CorpusCallosum:ccSchzNorms:634_4_128.buchar");   strcpy(str[32],"::CorpusCallosum:ccSchzNorms:638_4_128.buchar");   strcpy(str[33],"::CorpusCallosum:ccSchzNorms:649_4_128.buchar");   strcpy(str[34],"::CorpusCallosum:ccSchzNorms:652_4_128.buchar");   strcpy(str[35],"::CorpusCallosum:ccSchzNorms:653_4_128.buchar");   strcpy(str[36],"::CorpusCallosum:ccSchzNorms:654_4_128.buchar");   strcpy(str[37],"::CorpusCallosum:ccSchzNorms:673_4_128.buchar");   strcpy(str[38],"::CorpusCallosum:ccSchzNorms:674_4_128.buchar");   strcpy(str[39],"::CorpusCallosum:ccSchzNorms:681_4_128.buchar");   strcpy(str[40],"::CorpusCallosum:ccSchzNorms:688_4_128.buchar");   strcpy(str[41],"::CorpusCallosum:ccSchzNorms:794_4_128.buchar");   strcpy(str[42],"::CorpusCallosum:ccSchzNorms:847_7_128.buchar");   strcpy(str[43],"::CorpusCallosum:ccSchzNorms:851_6_128.buchar");   strcpy(str[44],"::CorpusCallosum:ccSchzNorms:860_4_128.buchar");   strcpy(str[45],"::CorpusCallosum:ccSchzNorms:871_4_128.buchar");   strcpy(str[46],"::CorpusCallosum:ccSchzNorms:874_4_128.buchar");   strcpy(str[47],"::CorpusCallosum:ccSchzNorms:880_4_128.buchar");     strcpy(sstr[0],"::CorpusCallosum:ccSchzNorms:1019");   strcpy(sstr[1],"::CorpusCallosum:ccSchzNorms:1039");   strcpy(sstr[2],"::CorpusCallosum:ccSchzNorms:1042");   strcpy(sstr[3],"::CorpusCallosum:ccSchzNorms:1044");   strcpy(sstr[4],"::CorpusCallosum:ccSchzNorms:1045");   strcpy(sstr[5],"::CorpusCallosum:ccSchzNorms:1046");   strcpy(sstr[6],"::CorpusCallosum:ccSchzNorms:1050");   strcpy(sstr[7],"::CorpusCallosum:ccSchzNorms:1069");   strcpy(sstr[8],"::CorpusCallosum:ccSchzNorms:1077");   strcpy(sstr[9],"::CorpusCallosum:ccSchzNorms:1110");   strcpy(sstr[10],"::CorpusCallosum:ccSchzNorms:1112");   strcpy(sstr[11],"::CorpusCallosum:ccSchzNorms:1120");   strcpy(sstr[12],"::CorpusCallosum:ccSchzNorms:1134");   strcpy(sstr[13],"::CorpusCallosum:ccSchzNorms:1150");   strcpy(sstr[14],"::CorpusCallosum:ccSchzNorms:1151");   strcpy(sstr[15],"::CorpusCallosum:ccSchzNorms:1152");   strcpy(sstr[16],"::CorpusCallosum:ccSchzNorms:1153");   strcpy(sstr[17],"::CorpusCallosum:ccSchzNorms:1154");   strcpy(sstr[18],"::CorpusCallosum:ccSchzNorms:1155");   strcpy(sstr[19],"::CorpusCallosum:ccSchzNorms:1156");   strcpy(sstr[20],"::CorpusCallosum:ccSchzNorms:1157");   strcpy(sstr[21],"::CorpusCallosum:ccSchzNorms:1158");   strcpy(sstr[22],"::CorpusCallosum:ccSchzNorms:1159");   strcpy(sstr[23],"::CorpusCallosum:ccSchzNorms:1182");   strcpy(sstr[24],"::CorpusCallosum:ccSchzNorms:521");   strcpy(sstr[25],"::CorpusCallosum:ccSchzNorms:522");   strcpy(sstr[26],"::CorpusCallosum:ccSchzNorms:538");   strcpy(sstr[27],"::CorpusCallosum:ccSchzNorms:546");   strcpy(sstr[28],"::CorpusCallosum:ccSchzNorms:594");   strcpy(sstr[29],"::CorpusCallosum:ccSchzNorms:595");   strcpy(sstr[30],"::CorpusCallosum:ccSchzNorms:632");   strcpy(sstr[31],"::CorpusCallosum:ccSchzNorms:634");   strcpy(sstr[32],"::CorpusCallosum:ccSchzNorms:638");   strcpy(sstr[33],"::CorpusCallosum:ccSchzNorms:649");   strcpy(sstr[34],"::CorpusCallosum:ccSchzNorms:652");   strcpy(sstr[35],"::CorpusCallosum:ccSchzNorms:653");   strcpy(sstr[36],"::CorpusCallosum:ccSchzNorms:654");   strcpy(sstr[37],"::CorpusCallosum:ccSchzNorms:673");   strcpy(sstr[38],"::CorpusCallosum:ccSchzNorms:674");   strcpy(sstr[39],"::CorpusCallosum:ccSchzNorms:681");   strcpy(sstr[40],"::CorpusCallosum:ccSchzNorms:688");   strcpy(sstr[41],"::CorpusCallosum:ccSchzNorms:794");   strcpy(sstr[42],"::CorpusCallosum:ccSchzNorms:847");   strcpy(sstr[43],"::CorpusCallosum:ccSchzNorms:851");   strcpy(sstr[44],"::CorpusCallosum:ccSchzNorms:860");   strcpy(sstr[45],"::CorpusCallosum:ccSchzNorms:871");   strcpy(sstr[46],"::CorpusCallosum:ccSchzNorms:874");   strcpy(sstr[47],"::CorpusCallosum:ccSchzNorms:880");              for (m=0;m<count;m++)    {      printf("m = %d\n",m);	  strcpy(inname,str[m]);       /* READ IN THE IMAGE */		      printf("Opening %s\n",inname);          if ((infile = fopen(inname,"r+")) == NULL)          {	        printf("Cannot open %s\n",inname);	        exit(1);          }   	        n = fread(pic,sizeof(unsigned char),ydim*xdim,infile);	        printf("%d bytes in image read\n",n);	        fclose(infile);	               /* mark the boundary points */	        for (i=0;i<ydim;i++) for (j=0;j<xdim;j++) bdry[i][j]=0;	        for (i=0;i<ydim-1;i++) for (j=0;j<xdim-1;j++)            {               if (pic[i][j]!=pic[i+1][j])                  bdry[i][j] = bdry[i+1][j] = 1;               if (pic[i][j]!=pic[i][j+1])                  bdry[i][j] = bdry[i][j+1] = 1;            }            for (i=0;i<ydim-1;i++)            {               j=xdim-1;               if (pic[i][j]!=pic[i+1][j])                  bdry[i][j] = bdry[i+1][j] = 1;            }            for (j=0;j<xdim-1;j++)            {               i=ydim-1;               if (pic[i][j]!=pic[i][j+1])               bdry[i][j] = bdry[i][j+1] = 1;            }           /* READ IN distance function */         strcpy(inname,sstr[m]);   strcpy(d_name, inname);   strcat(d_name, "dist");    printf("Opening %s\n",d_name);   if ((infile = fopen(d_name,"r+")) == NULL)   {	 printf("Cannot open %s\n",d_name);	 exit(1);   }      n = fread(v,sizeof(float),xdim*ydim,infile);   fclose(infile);   ridge_gr();   construct_sk();    output_results();  }   printf("\n\n done \n");   systime = time(NULL);   puts(ctime(&systime));}

⌨️ 快捷键说明

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