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

📄 i18nclbk.c

📁 手写识别Chinput3.0.2源代码,可以在linux下开发手写板程序
💻 C
📖 第 1 页 / 共 2 页
字号:
        return False;    }    /*endif*/    memset (reply, 0, total_size);    FrameMgrSetBuffer (fm, reply);    FrameMgrPutToken (fm, connect_id);    FrameMgrPutToken (fm, preedit_CB->icid);    _Xi18nSendMessage (ims,                       connect_id,                       XIM_PREEDIT_DONE,                       0,                       reply,                       total_size);    FrameMgrFree (fm);    XFree (reply);    /* XIM_PREEDIT_DONE is an asyncronous protocol, so return immediately. */    return True;}int _Xi18nStatusStartCallback (XIMS ims, IMProtocol *call_data){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec status_start_fr[];    register int total_size;    unsigned char *reply = NULL;    IMStatusCBStruct *status_CB =        (IMStatusCBStruct*) &call_data->status_callback;    CARD16 connect_id = call_data->any.connect_id;    fm = FrameMgrInit (status_start_fr,                       NULL,                       _Xi18nNeedSwap (i18n_core, connect_id));    total_size = FrameMgrGetTotalSize (fm);    reply = (unsigned char *) malloc (total_size);    if (!reply)    {        _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);        return False;    }    /*endif*/    memset (reply, 0, total_size);    FrameMgrSetBuffer (fm, reply);    FrameMgrPutToken (fm, connect_id);    FrameMgrPutToken (fm, status_CB->icid);    _Xi18nSendMessage (ims,                       connect_id,                       XIM_STATUS_START,                       0,                       reply,                       total_size);    FrameMgrFree (fm);    XFree (reply);    /* XIM_STATUS_START is an asyncronous protocol, so return immediately. */    return True;}int _Xi18nStatusDrawCallback (XIMS ims, IMProtocol *call_data){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec status_draw_text_fr[];    extern XimFrameRec status_draw_bitmap_fr[];    register int total_size;    unsigned char *reply = NULL;    IMStatusCBStruct *status_CB =        (IMStatusCBStruct *) &call_data->status_callback;    XIMStatusDrawCallbackStruct *draw =        (XIMStatusDrawCallbackStruct *) &status_CB->todo.draw;    CARD16 connect_id = call_data->any.connect_id;    register int feedback_count;    register int i;    BITMASK32 status = 0x0;    switch (draw->type)    {    case XIMTextType:        fm = FrameMgrInit (status_draw_text_fr,                           NULL,                           _Xi18nNeedSwap (i18n_core, connect_id));        if (draw->data.text->length == 0)            status = 0x00000001;        else if (draw->data.text->feedback[0] == 0)            status = 0x00000002;        /*endif*/                /* set length of status string */        FrameMgrSetSize(fm, draw->data.text->length);        /* set iteration count for list of feedback */        for (i = 0;  draw->data.text->feedback[i] != 0;  i++)            ;        /*endfor*/        feedback_count = i;        FrameMgrSetIterCount (fm, feedback_count);        total_size = FrameMgrGetTotalSize (fm);        reply = (unsigned char *) malloc (total_size);        if (!reply)        {            _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);            return False;        }        /*endif*/        memset (reply, 0, total_size);        FrameMgrSetBuffer (fm, reply);        FrameMgrPutToken (fm, connect_id);        FrameMgrPutToken (fm, status_CB->icid);        FrameMgrPutToken (fm, draw->type);        FrameMgrPutToken (fm, status);        FrameMgrPutToken (fm, draw->data.text->length);        FrameMgrPutToken (fm, draw->data.text->string);        for (i = 0;  i < feedback_count;  i++)            FrameMgrPutToken (fm, draw->data.text->feedback[i]);        /*endfor*/        break;    case XIMBitmapType:        fm = FrameMgrInit (status_draw_bitmap_fr,                           NULL,                           _Xi18nNeedSwap (i18n_core, connect_id));        total_size = FrameMgrGetTotalSize (fm);        reply = (unsigned char *) malloc (total_size);        if (!reply)        {            _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);            return False;        }        /*endif*/        memset (reply, 0, total_size);        FrameMgrSetBuffer (fm, reply);        FrameMgrPutToken (fm, connect_id);        FrameMgrPutToken (fm, status_CB->icid);        FrameMgrPutToken (fm, draw->data.bitmap);        break;    }    /*endswitch*/    _Xi18nSendMessage (ims,                       connect_id,                       XIM_STATUS_DRAW,                       0,                       reply,                       total_size);    FrameMgrFree (fm);    XFree (reply);    /* XIM_STATUS_DRAW is an asyncronous protocol, so return immediately. */    return True;}int _Xi18nStatusDoneCallback (XIMS ims, IMProtocol *call_data){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec status_done_fr[];    register int total_size;    unsigned char *reply = NULL;    IMStatusCBStruct *status_CB =        (IMStatusCBStruct *) &call_data->status_callback;    CARD16 connect_id = call_data->any.connect_id;    fm = FrameMgrInit (status_done_fr,                       NULL,                       _Xi18nNeedSwap (i18n_core, connect_id));    total_size = FrameMgrGetTotalSize (fm);    reply = (unsigned char *) malloc (total_size);    if (!reply)    {        _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);        return False;    }    /*endif*/    memset (reply, 0, total_size);    FrameMgrSetBuffer (fm, reply);    FrameMgrPutToken (fm, connect_id);    FrameMgrPutToken (fm, status_CB->icid);    _Xi18nSendMessage (ims,                       connect_id,                       XIM_STATUS_DONE,                       0,                       reply,                       total_size);    FrameMgrFree (fm);    XFree (reply);    /* XIM_STATUS_DONE is an asyncronous protocol, so return immediately. */    return True;}int _Xi18nStringConversionCallback (XIMS ims, IMProtocol *call_data){    Xi18n i18n_core = ims->protocol;    FrameMgr fm;    extern XimFrameRec str_conversion_fr[];    register int total_size;    unsigned char *reply = NULL;    IMStrConvCBStruct *call_back =        (IMStrConvCBStruct *) &call_data->strconv_callback;    XIMStringConversionCallbackStruct *strconv =        (XIMStringConversionCallbackStruct *) &call_back->strconv;    CARD16 connect_id = call_data->any.connect_id;    fm = FrameMgrInit (str_conversion_fr,                       NULL,                      _Xi18nNeedSwap (i18n_core, connect_id));#if 0    /* set length of preedit string */    FrameMgrSetSize (fm, strconv->text->length);#endif    total_size = FrameMgrGetTotalSize (fm);    reply = (unsigned char *) malloc (total_size);    if (!reply)    {        _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0);        return False;    }    /*endif*/    memset (reply, 0, total_size);    FrameMgrSetBuffer (fm, reply);    FrameMgrPutToken (fm, connect_id);    FrameMgrPutToken (fm, call_back->icid);    FrameMgrPutToken (fm, strconv->position);    FrameMgrPutToken (fm, strconv->direction);    FrameMgrPutToken (fm, strconv->operation);#if 0    FrameMgrPutToken (fm, strconv->text->string);#endif    _Xi18nSendMessage (ims, connect_id,                       XIM_STR_CONVERSION,                       0,                       reply,                       total_size);    FrameMgrFree (fm);    XFree (reply);    /* XIM_STR_CONVERSION is a syncronous protocol,       so should wait here for XIM_STR_CONVERSION_REPLY. */    if (i18n_core->methods.wait (ims,                                 connect_id,                                 XIM_STR_CONVERSION_REPLY,                                 0) == False)    {        return False;    }    /*endif*/    return True;}

⌨️ 快捷键说明

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