Exemple #1
0
Bool32 TestFontProtocol(void)
{
#ifdef _USE_LEO_
    int32_t          name;
    int            i; //,j;
    int            nClust;
    int            numCourier,nC;
    FILE          *fp;
    LeoFieldSetup  fs={0};
    RecRaster   rec;
    RecObject   ro={0};
    LeoPageSetup ps={0};
    int jj;

    if( _access("c:\\met.ini",0)==-1 )
        return FALSE;

    nClust=FONGetClustCount();

    set_alphabet(alphabet1, alpha_str);

    LEOSetPlatform(586);
    fs.nStyle = LS_PRINT;
    memcpy(fs.AlphaTable,alphabet1,256);
    LEOSetupField(&fs);
    CTB_unlink("CLUST2");

    fp=fopen(".\\clu_met.pro","wt");
    for(i=0,nC=numCourier=0;i<nClust;i++)
    {
        for(jj=0;jj<3;jj++)
        {
            name=0;
            FONGetClusterAsBW(&name,i,jj*25,&rec);
            CTB_AddRecRaster("CLUST2", &rec,decode_ASCII_to_[name][0]);
            memset(&ro,0,sizeof(RecObject));
            memcpy(&ro.recData.recRaster,&rec,REC_MAX_RASTER_SIZE);
            ps.nIdPage=-1;
            ro.recData.lwStatus=0;
            LEOSetupPage(&ps);
            fprintf(fp,"Nclu=%d(%d) let=%c tresh=%d%s\n",i,i*3+jj, name, jj,jj?"":"(default)" );

            LEORecogPrintChar(&ro);
            print_method(fp,&ro.recResults,"         leo : ",1);


            LEORecogPrnMethod( &ro , REC_METHOD_MSK, 1);
            print_method(fp,&ro.recResults,"         msk : ",0);

            LEORecogCharDebug( &ro );
            print_method(fp,&ro.recResults,"     evn+3x5 : ",1);
        } // end treshold
        fprintf(fp,"\n");
    }   // end clusters

    fclose(fp);
#endif
    return TRUE;
}
Exemple #2
0
symmetric_printing_device::symmetric_printing_device(ustring alpha_chars)
{
    vector<gunichar> help;
    
    ustr_to_vec(alpha_chars, help);
    boost::shared_ptr<alphabet<gunichar> > alpha(new alphabet<gunichar>(help));
    set_alphabet(alpha);
}
Exemple #3
0
Bool32 RecogLEOcap(RecRaster *Rs,uchar Language,RecVersions *Vs)
{
#ifdef _USE_LEO_
    LeoFieldSetup  fs={0};
    RecObject      ro={0};
    LeoPageSetup   ps={0};
    char    *      alpha;

    switch(Language)
    {
    case PUMA_LANG_RUSSIAN:
        alpha = alpha_str_cap;
        break;
    case PUMA_LANG_ENGLISH:
        alpha = alpha_str_lat_cap;
        break;
    default:
        alpha = alpha_str_all_cap;
        break;
    }

    set_alphabet(alphabet1, alpha);

    LEOSetPlatform(586);
    fs.nStyle = LS_PRINT;
    memcpy(fs.AlphaTable,alphabet1,256);
    LEOSetupField(&fs);

    memset(&ro,0,sizeof(RecObject));
    memcpy(&ro.recData.recRaster,Rs,REC_MAX_RASTER_SIZE);
    ps.nIdPage=-1;
    ro.recData.lwStatus=0;
    LEOSetupPage(&ps);

    LEORecogPrintChar(&ro);
    memcpy(Vs,&ro.recResults,sizeof(RecVersions));
#endif
    return TRUE;
}
Exemple #4
0
static DBusMessage *sms_set_property(DBusConnection *conn, DBusMessage *msg,
					void *data)
{
	struct ofono_sms *sms = data;
	DBusMessageIter iter;
	DBusMessageIter var;
	const char *property;

	if (sms->pending)
		return __ofono_error_busy(msg);

	if (!dbus_message_iter_init(msg, &iter))
		return __ofono_error_invalid_args(msg);

	if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
		return __ofono_error_invalid_args(msg);

	dbus_message_iter_get_basic(&iter, &property);
	dbus_message_iter_next(&iter);

	if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT)
		return __ofono_error_invalid_args(msg);

	dbus_message_iter_recurse(&iter, &var);

	if (!strcmp(property, "ServiceCenterAddress")) {
		const char *value;
		struct ofono_phone_number sca;

		if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_STRING)
			return __ofono_error_invalid_args(msg);

		dbus_message_iter_get_basic(&var, &value);

		if (strlen(value) == 0 || !valid_phone_number_format(value))
			return __ofono_error_invalid_format(msg);

		if (sms->driver->sca_set == NULL ||
				sms->driver->sca_query == NULL)
			return __ofono_error_not_implemented(msg);

		string_to_phone_number(value, &sca);

		sms->pending = dbus_message_ref(msg);

		sms->driver->sca_set(sms, &sca, sca_set_callback, sms);
		return NULL;
	}

	if (!strcmp(property, "Bearer")) {
		const char *value;
		int bearer;

		if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_STRING)
			return __ofono_error_invalid_args(msg);

		dbus_message_iter_get_basic(&var, &value);

		if (sms_bearer_from_string(value, &bearer) != TRUE)
			return __ofono_error_invalid_format(msg);

		if (sms->driver->bearer_set == NULL ||
				sms->driver->bearer_query == NULL)
			return __ofono_error_not_implemented(msg);

		sms->pending = dbus_message_ref(msg);

		sms->driver->bearer_set(sms, bearer, bearer_set_callback, sms);
		return NULL;
	}

	if (!strcmp(property, "UseDeliveryReports")) {
		const char *path = __ofono_atom_get_path(sms->atom);
		dbus_bool_t value;

		if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_BOOLEAN)
			return __ofono_error_invalid_args(msg);

		dbus_message_iter_get_basic(&var, &value);

		g_dbus_send_reply(conn, msg, DBUS_TYPE_INVALID);

		if (sms->use_delivery_reports != (ofono_bool_t) value) {
			sms->use_delivery_reports = value;
			ofono_dbus_signal_property_changed(conn, path,
						OFONO_MESSAGE_MANAGER_INTERFACE,
						"UseDeliveryReports",
						DBUS_TYPE_BOOLEAN, &value);
		}

		return NULL;
	}

	if (!strcmp(property, "Alphabet")) {
		const char *value;
		enum sms_alphabet alphabet;

		if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_STRING)
			return __ofono_error_invalid_args(msg);

		dbus_message_iter_get_basic(&var, &value);

		if (!sms_alphabet_from_string(value, &alphabet))
			return __ofono_error_invalid_format(msg);

		set_alphabet(sms, alphabet);

		g_dbus_send_reply(conn, msg, DBUS_TYPE_INVALID);
		return NULL;
	}

	return __ofono_error_invalid_args(msg);
}
void read_regexp_file(
   char*      filename,          // Name of MEME file  IN
   int*       num_motifs,             // Number of motifs retrieved  OUT
   MOTIF_T*   motifs                 // The retrieved motifs - NOT ALLOCATED!
) {
	FILE*      motif_file;         // MEME file containing the motifs.
	char motif_name[MAX_MOTIF_ID_LENGTH+1];
	char motif_regexp[MAX_MOTIF_WIDTH];
	ARRAY_T* these_freqs;
	MOTIF_T* m;
	int i;

	//Set things to the defaults.
	*num_motifs = 0;

	// Open the given MEME file.
	if (open_file(filename, "r", TRUE, "motif", "motifs", &motif_file) == 0)
		exit(1);

	//Set alphabet - ONLY supports dna.
	set_alphabet(verbosity, "ACGT");

	while (fscanf(motif_file, "%s\t%s", motif_name, motif_regexp) == 2) {
		/*
		 * Now we:
		 * 1. Fill in new motif (preallocated)
		 * 2. Assign name
		 * 3. Convert regexp into frequency table.
		 */

		m = &(motifs[*num_motifs]);
		set_motif_id(motif_name, m);
		m->length = strlen(motif_regexp);
		/* Store the alphabet size in the motif. */
		m->alph_size = get_alph_size(ALPH_SIZE);
		m->ambigs = get_alph_size(AMBIG_SIZE);
		/* Allocate memory for the matrix. */
		m->freqs = allocate_matrix(m->length, get_alph_size(ALL_SIZE));

		//Set motif frequencies here.
		for (i=0;i<strlen(motif_regexp);i++) {
			switch(toupper(motif_regexp[i])) {
			case 'A':
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'C':
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'G':
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'T':
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'U':
				set_matrix_cell(i,alphabet_index('U',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'R': //purines
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'Y': //pyramidines
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'K': //keto
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'M': //amino
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'S': //strong
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'W': //weak
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'B':
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'D':
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'H':
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'V':
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				break;
			case 'N':
				set_matrix_cell(i,alphabet_index('A',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('C',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('G',get_alphabet(TRUE)),1,m->freqs);
				set_matrix_cell(i,alphabet_index('T',get_alphabet(TRUE)),1,m->freqs);
				break;
			}
		}

	    /* Compute values for ambiguous characters. */
		for (i = 0; i < m->length; i++) {
		    these_freqs = get_matrix_row(i, m->freqs);
		    fill_in_ambiguous_chars(FALSE, these_freqs);
		}

		/* Compute and store the motif complexity. */
		m->complexity = compute_motif_complexity(m);

		//Move our pointer along to do the next motif.
		(*num_motifs)++;
	}
}
Exemple #6
0
Bool32 RecogLEO_SetAlphabet(char *letters)
{
    set_alphabet(alphabet1, letters);
    return TRUE;
}
Exemple #7
0
Bool32 RecogLEO(RecRaster *Rs,uchar Language,UniVersions *Us)
{
#ifdef _USE_LEO_
    LeoFieldSetup  fs={0};
    RecObject      ro={0};
    LeoPageSetup   ps={0};
    char    *      alpha;
    uchar          c, cw;
    int32_t          i, up=-1;


    alpha = alpha_str;
    set_alphabet(alphabet1, alpha);

    LEOSetPlatform(586);
    fs.nStyle = LS_PRINT;
    memcpy(fs.AlphaTable,alphabet1,256);
    LEOSetupField(&fs);

    memset(&ro,0,sizeof(RecObject));
    memcpy(&ro.recData.recRaster,Rs,REC_MAX_RASTER_SIZE);
    ps.nIdPage=-1;
    ro.recData.lwStatus=0;
    LEOSetupPage(&ps);

    LEORecogPrintChar(&ro);
    //        memcpy(Vs,&ro.recResults,sizeof(RecVersions));
    if( Us->lnAltCnt )
    {
        c = Us->Alt[0].Liga     ;
        if( is_upper(c) )
            up=1;
        else  if( is_lower(c) )
            up=0;
    }
    Us->lnAltCnt=ro.recResults.lnAltCnt;
    Us->lnAltMax=REC_MAX_VERS;

    for(i=0;i<ro.recResults.lnAltCnt;i++)
    {
        c  = stdAnsiToAscii( ro.recResults.Alt[i].Code);
        switch( up )
        {
                case    1: // upper
                    c=to_upper(c);
                    break;
                case    0: // lower
                    c=to_lower(c);
                    break;
                default:
                    break;
                }
        cw = stdAsciiToAnsi( c );
        Us->Alt[i].Code[0]=cw;
        Us->Alt[i].Code[1]=0;
        Us->Alt[i].Liga=c;
        Us->Alt[i].Charset=CSTR_RUSSIAN_CHARSET;
        Us->Alt[i].Method =REC_METHOD_LEO;
        Us->Alt[i].Prob   = ro.recResults.Alt[i].Prob ;
    }
#endif
    return TRUE;
}
Exemple #8
0
int32_t TestFontClusters(void)
{
#ifdef _USE_LEO_
    int32_t          name;
    int            i,j;
    int            nClust;
    int            porog=50; // test !!!
    int            numInvalid;

    LeoFieldSetup  fs={0};
    RecRaster   rec;
    RecObject   ro={0};
    LeoPageSetup ps={0};
    ClustInfo cluInfo;
    uchar addLet,resLet;

#ifdef _SAVE_INVALID_CLU_
    FILE          *fp;
#endif

    curNumFile++;

    nClust=FONGetClustCount();
    set_alphabet(alphabet1, alpha_str);

#ifdef _SAVE_INVALID_CLU_
    fp=fopen("clust.tst","at");
    fprintf(fp,"file %d\n",curNumFile);
#endif

    LEOSetPlatform(LEOGetCPU());
    fs.nStyle = LS_PRINT;
    memcpy(fs.AlphaTable,alphabet1,256);
    LEOSetupField(&fs);

    for(i=0,numInvalid=0;i<nClust;i++)
    {
        cluInfo.let = 0;
        j=FONGetClustInfo(&cluInfo,i+1);
        if(j<=0)
            continue;

        if(cluInfo.attr & CTB_PRINT_ITALIC)
            continue;

        if(cluInfo.attr & CTB_PRINT_BOLD)
            continue;

        // now - test only russian ASCII letters
        if(cluInfo.let < 128 ||
           cluInfo.let >= 176 && cluInfo.let < 224 ||
           cluInfo.let > 240
           )
            continue;

        addLet=(cluInfo.let < 144 ? cluInfo.let +32 :
                cluInfo.let < 160 ? cluInfo.let +80 :
                cluInfo.let < 176 ? cluInfo.let -32 :
                cluInfo.let - 80
                );


        name=0;
        FONGetClusterAsBW(&name,i,porog,&rec);

        memset(&ro,0,sizeof(RecObject));
        memcpy(&ro.recData.recRaster,&rec,sizeof(RecRaster));
        ps.nIdPage=-1;
        ro.recData.lwStatus=0;
        LEOSetupPage(&ps);

        LEORecogPrintChar(&ro);

        // ничего хорошего по LEO ?
        if( ro.recResults.lnAltCnt <= 0 ||
            ro.recResults.Alt[0].Prob < 150
            )
            continue;

        for(j=0;j<ro.recResults.lnAltCnt;j++)
        {
            resLet = stdAnsiToAscii(ro.recResults.Alt[j].Code);

            if( resLet == cluInfo.let ||
                resLet == addLet )
                break;
        }

        if(j==0)
            continue;

        { char *qq;

            resLet = stdAnsiToAscii(ro.recResults.Alt[0].Code);
            if( !is_lower(resLet) )
                resLet =  to_lower(resLet);
            if( (qq=strchr(hasNearSame,cluInfo.let)) &&
                NearSame[qq-(char*)hasNearSame] == resLet
                )
                continue;
        }

        // узналось как что-то иное ?
        // если совсем не распозналось - бывает ('»' в sten91)
        if( j >= ro.recResults.lnAltCnt ||
            ro.recResults.Alt[j].Prob < 180 ||
            ro.recResults.Alt[j].Prob < 220 &&
            ro.recResults.Alt[j].Prob + 25 < ro.recResults.Alt[0].Prob
            )
        {
            FonTestInfo testInfo[MAXCHECKALT];

            // проверим
            resLet = stdAnsiToAscii(ro.recResults.Alt[0].Code);
            j=FONTestChar(&rec,resLet,testInfo,0);

            if( j <=0 || testInfo[0].prob <= 215 )
            {
                resLet=(resLet < 144 ? resLet +32 :
                        resLet < 160 ? resLet +80 :
                        resLet < 176 ? resLet -32 :
                        resLet - 80
                        );
                j=FONTestChar(&rec,resLet,testInfo,0);
            }

            if( j > 0 && testInfo[0].prob > 215 )
            {
                numInvalid++;
                FONSetClusterInvalid(i+1);
#ifdef _SAVE_INVALID_CLU_
                fprintf(fp,"    invalid %d (%c -> %c(%d))\n",i+1,cluInfo.let,
                        stdAnsiToAscii(ro.recResults.Alt[0].Code),
                        ro.recResults.Alt[0].Prob);
#endif
            }
        } // end if j

    }   // end clusters



#ifdef _SAVE_INVALID_CLU_
    fclose(fp);
#endif

    return numInvalid;
#else
    return 0;
#endif
}