Пример #1
0
/*
---------------------------------------
    绘制文字 (实体/透明)
---------------------------------------
*/
static bool_t
qst_crh_text (
  __CR_IN__ void_t*     parm,
  __CR_IN__ uint_t      argc,
  __CR_IN__ ansi_t**    argv
    )
{
    sRECT   rect;
    bool_t  rett;
    bool_t  tran;
    ansi_t* temp;
    ansi_t* text;
    sIMAGE* draw;
    uint_t  ww,hh;
    uint_t  align;

    /* 参数解析 <X> <Y> <EscText> [Width Height Align] */
    if (argc < 4)
        return (FALSE);
    if (s_font == NULL)
        return (FALSE);
    draw = ((sQstView2D*)parm)->paint;
    if (draw == NULL)
        return (FALSE);

    /* 必须使用转义字符串 */
    temp = str_fmtA("\"%s\"", argv[3]);
    if (temp == NULL)
        return (FALSE);
    text = str_esc_dupU(temp);
    mem_free(temp);
    if (text == NULL)
        return (FALSE);

    /* 区分实体和透明, 两个命令合并起来了 */
    if (str_cmpA(argv[0], "crh:texts") == 0)
        tran = FALSE;
    else
        tran = TRUE;
    rect.x1 = (sint_t)str2intxA(argv[1]);
    rect.y1 = (sint_t)str2intxA(argv[2]);
    if (argc > 6) {
        ww = str2intxA(argv[4]);
        hh = str2intxA(argv[5]);
        align = str2intxA(argv[6]);
        rect_set_wh(&rect, rect.x1, rect.y1, ww, hh);
    }
    else {
        align = 0;
    }
    rett = qst_crh_text_int(draw, tran, &rect, text, align);
    mem_free(text);
    return (rett);
}
Пример #2
0
/*
=======================================
    转义字符串发送
=======================================
*/
CR_API void_t*
qst_esc_tran (
  __CR_IN__ const ansi_t*   string,
  __CR_OT__ uint_t*         ot_size
    )
{
    leng_t  len;
    ansi_t* dat;
    ansi_t* str;

    str = str_fmtA("\"%s\"", string);
    if (str == NULL)
        return (NULL);
    dat = str_esc_dupU(str, &len);
    mem_free(str);
    *ot_size = len;
    return (dat);
}
Пример #3
0
/*
---------------------------------------
    绘制文字 (使用外部定义)
---------------------------------------
*/
static bool_t
qst_crh_text_ex (
  __CR_IN__ void_t*     parm,
  __CR_IN__ uint_t      argc,
  __CR_IN__ ansi_t**    argv
    )
{
    sRECT*  rect;
    bool_t  free;
    bool_t  rett;
    bool_t  tran;
    uint_t  algn;
    ansi_t* temp;
    ansi_t* text;
    sIMAGE* draw;

    /* 参数解析 <EscText/TextName> <RectName> <Align> [IsTextName] */
    if (argc < 4)
        return (FALSE);
    if (s_font == NULL)
        return (FALSE);
    if (s_resx == NULL)
        return (FALSE);
    draw = ((sQstView2D*)parm)->paint;
    if (draw == NULL)
        return (FALSE);

    /* 查找目标矩形对象 */
    rect = egui_res_get_rct(s_resx, argv[2]);
    if (rect == NULL)
        return (FALSE);

    /* 找不到或不使用文本名称的时候使用转义字符串 */
    if (argc > 4)
        text = egui_res_get_txt(s_resx, argv[1]);
    else
        text = NULL;
    if (text == NULL) {
        temp = str_fmtA("\"%s\"", argv[1]);
        if (temp == NULL)
            return (FALSE);
        text = str_esc_dupU(temp);
        mem_free(temp);
        if (text == NULL)
            return (FALSE);
        free = TRUE;
    }
    else {
        free = FALSE;
    }

    /* 区分实体和透明, 两个命令合并起来了 */
    if (str_cmpA(argv[0], "crh:texts_ex") == 0)
        tran = FALSE;
    else
        tran = TRUE;
    algn = str2intxA(argv[3]);
    rett = qst_crh_text_int(draw, tran, rect, text, algn);
    if (free)
        mem_free(text);
    return (rett);
}