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

📄 ptk-text-renderer.c

📁 台湾人开发的Linux下的文件管理器
💻 C
📖 第 1 页 / 共 3 页
字号:
    case PROP_FOREGROUND_GDK:        {            GdkColor color;            color.red = celltext->foreground.red;            color.green = celltext->foreground.green;            color.blue = celltext->foreground.blue;            g_value_set_boxed ( value, &color );        }        break;    case PROP_FONT:        {            /* FIXME GValue imposes a totally gratuitous string copy                * here, we could just hand off string ownership            */            gchar *str = pango_font_description_to_string ( celltext->font );            g_value_set_string ( value, str );            g_free ( str );        }        break;    case PROP_FONT_DESC:        g_value_set_boxed ( value, celltext->font );        break;    case PROP_UNDERLINE:        g_value_set_enum ( value, celltext->underline_style );        break;    case PROP_ELLIPSIZE:        g_value_set_enum ( value, celltext->ellipsize );        break;    case PROP_WRAP_MODE:        g_value_set_enum ( value, celltext->wrap_mode );        break;    case PROP_WRAP_WIDTH:        g_value_set_int ( value, celltext->wrap_width );        break;    case PROP_BACKGROUND_SET:        g_value_set_boolean ( value, celltext->background_set );        break;    case PROP_FOREGROUND_SET:        g_value_set_boolean ( value, celltext->foreground_set );        break;    case PROP_UNDERLINE_SET:        g_value_set_boolean ( value, celltext->underline_set );        break;    case PROP_ELLIPSIZE_SET:        g_value_set_boolean ( value, celltext->ellipsize_set );        break;    case PROP_BACKGROUND:    case PROP_FOREGROUND:    default:        G_OBJECT_WARN_INVALID_PROPERTY_ID ( object, param_id, pspec );        break;    }}static voidset_bg_color ( PtkTextRenderer *celltext,               GdkColor *color ){    if ( color )    {        if ( !celltext->background_set )        {            celltext->background_set = TRUE;            g_object_notify ( G_OBJECT ( celltext ), "background-set" );        }        celltext->background.red = color->red;        celltext->background.green = color->green;        celltext->background.blue = color->blue;    }    else    {        if ( celltext->background_set )        {            celltext->background_set = FALSE;            g_object_notify ( G_OBJECT ( celltext ), "background-set" );        }    }}static voidset_fg_color ( PtkTextRenderer *celltext,               GdkColor *color ){    if ( color )    {        if ( !celltext->foreground_set )        {            celltext->foreground_set = TRUE;            g_object_notify ( G_OBJECT ( celltext ), "foreground-set" );        }        celltext->foreground.red = color->red;        celltext->foreground.green = color->green;        celltext->foreground.blue = color->blue;    }    else    {        if ( celltext->foreground_set )        {            celltext->foreground_set = FALSE;            g_object_notify ( G_OBJECT ( celltext ), "foreground-set" );        }    }}static PangoFontMaskset_font_desc_fields ( PangoFontDescription *desc,                       PangoFontMask to_set ){    PangoFontMask changed_mask = 0;    if ( to_set & PANGO_FONT_MASK_FAMILY )    {        const char * family = pango_font_description_get_family ( desc );        if ( !family )        {            family = "sans";            changed_mask |= PANGO_FONT_MASK_FAMILY;        }        pango_font_description_set_family ( desc, family );    }    if ( to_set & PANGO_FONT_MASK_STYLE )        pango_font_description_set_style ( desc, pango_font_description_get_style ( desc ) );    if ( to_set & PANGO_FONT_MASK_VARIANT )        pango_font_description_set_variant ( desc, pango_font_description_get_variant ( desc ) );    if ( to_set & PANGO_FONT_MASK_WEIGHT )        pango_font_description_set_weight ( desc, pango_font_description_get_weight ( desc ) );    if ( to_set & PANGO_FONT_MASK_STRETCH )        pango_font_description_set_stretch ( desc, pango_font_description_get_stretch ( desc ) );    if ( to_set & PANGO_FONT_MASK_SIZE )    {        gint size = pango_font_description_get_size ( desc );        if ( size <= 0 )        {            size = 10 * PANGO_SCALE;            changed_mask |= PANGO_FONT_MASK_SIZE;        }        pango_font_description_set_size ( desc, size );    }    return changed_mask;}static voidnotify_set_changed ( GObject *object,                     PangoFontMask changed_mask ){    if ( changed_mask & PANGO_FONT_MASK_FAMILY )        g_object_notify ( object, "family-set" );    if ( changed_mask & PANGO_FONT_MASK_STYLE )        g_object_notify ( object, "style-set" );    if ( changed_mask & PANGO_FONT_MASK_VARIANT )        g_object_notify ( object, "variant-set" );    if ( changed_mask & PANGO_FONT_MASK_WEIGHT )        g_object_notify ( object, "weight-set" );    if ( changed_mask & PANGO_FONT_MASK_STRETCH )        g_object_notify ( object, "stretch-set" );    if ( changed_mask & PANGO_FONT_MASK_SIZE )        g_object_notify ( object, "size-set" );}static voidnotify_fields_changed ( GObject *object,                        PangoFontMask changed_mask ){    if ( changed_mask & PANGO_FONT_MASK_FAMILY )        g_object_notify ( object, "family" );    if ( changed_mask & PANGO_FONT_MASK_STYLE )        g_object_notify ( object, "style" );    if ( changed_mask & PANGO_FONT_MASK_VARIANT )        g_object_notify ( object, "variant" );    if ( changed_mask & PANGO_FONT_MASK_WEIGHT )        g_object_notify ( object, "weight" );    if ( changed_mask & PANGO_FONT_MASK_STRETCH )        g_object_notify ( object, "stretch" );    if ( changed_mask & PANGO_FONT_MASK_SIZE )        g_object_notify ( object, "size" );}static voidset_font_description ( PtkTextRenderer *celltext,                       PangoFontDescription *font_desc ){    GObject * object = G_OBJECT ( celltext );    PangoFontDescription *new_font_desc;    PangoFontMask old_mask, new_mask, changed_mask, set_changed_mask;    if ( font_desc )        new_font_desc = pango_font_description_copy ( font_desc );    else        new_font_desc = pango_font_description_new ();    old_mask = pango_font_description_get_set_fields ( celltext->font );    new_mask = pango_font_description_get_set_fields ( new_font_desc );    changed_mask = old_mask | new_mask;    set_changed_mask = old_mask ^ new_mask;    pango_font_description_free ( celltext->font );    celltext->font = new_font_desc;    g_object_freeze_notify ( object );    g_object_notify ( object, "font-desc" );    g_object_notify ( object, "font" );    if ( changed_mask & PANGO_FONT_MASK_FAMILY )        g_object_notify ( object, "family" );    if ( changed_mask & PANGO_FONT_MASK_STYLE )        g_object_notify ( object, "style" );    if ( changed_mask & PANGO_FONT_MASK_VARIANT )        g_object_notify ( object, "variant" );    if ( changed_mask & PANGO_FONT_MASK_WEIGHT )        g_object_notify ( object, "weight" );    if ( changed_mask & PANGO_FONT_MASK_STRETCH )        g_object_notify ( object, "stretch" );    if ( changed_mask & PANGO_FONT_MASK_SIZE )    {        g_object_notify ( object, "size" );        g_object_notify ( object, "size-points" );    }    notify_set_changed ( object, set_changed_mask );    g_object_thaw_notify ( object );}static voidptk_text_renderer_set_property ( GObject *object,                                 guint param_id,                                 const GValue *value,                                 GParamSpec *pspec ){    PtkTextRenderer * celltext = PTK_TEXT_RENDERER ( object );    switch ( param_id )    {    case PROP_TEXT:        g_free ( celltext->text );        celltext->text = g_strdup ( g_value_get_string ( value ) );        g_object_notify ( object, "text" );        break;    case PROP_BACKGROUND:        {            GdkColor color;            if ( !g_value_get_string ( value ) )                set_bg_color ( celltext, NULL );       /* reset to backgrounmd_set to FALSE */            else if ( gdk_color_parse ( g_value_get_string ( value ), &color ) )                set_bg_color ( celltext, &color );            else                g_warning ( "Don't know color `%s'", g_value_get_string ( value ) );            g_object_notify ( object, "background-gdk" );        }        break;    case PROP_FOREGROUND:        {            GdkColor color;            if ( !g_value_get_string ( value ) )                set_fg_color ( celltext, NULL );       /* reset to foreground_set to FALSE */            else if ( gdk_color_parse ( g_value_get_string ( value ), &color ) )                set_fg_color ( celltext, &color );            else                g_warning ( "Don't know color `%s'", g_value_get_string ( value ) );            g_object_notify ( object, "foreground-gdk" );        }        break;    case PROP_BACKGROUND_GDK:        /* This notifies the GObject itself. */        set_bg_color ( celltext, g_value_get_boxed ( value ) );        break;    case PROP_FOREGROUND_GDK:        /* This notifies the GObject itself. */        set_fg_color ( celltext, g_value_get_boxed ( value ) );        break;    case PROP_FONT:        {            PangoFontDescription *font_desc = NULL;            const gchar *name;            name = g_value_get_string ( value );            if ( name )                font_desc = pango_font_description_from_string ( name );            set_font_description ( celltext, font_desc );            pango_font_description_free ( font_desc );        }        break;    case PROP_FONT_DESC:        set_font_description ( celltext, g_value_get_boxed ( value ) );        break;    case PROP_UNDERLINE:        celltext->underline_style = g_value_get_enum ( value );        celltext->underline_set = TRUE;        g_object_notify ( object, "underline-set" );        break;

⌨️ 快捷键说明

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