文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>KDE桌面字体阴影设置参数分析

KDE桌面字体阴影设置参数分析

时间:2007-04-22  来源:lenovox

    KDE默认桌面字体的阴影效果很是不好,默认的阴影看起来很硬有点不太舒服,总想设法设置一下却一直没来得及。先到网上搜了搜,方法是找到了。就是在桌面的配置文件里写上一个参数,不过对这几个参数的意思就不太明白了。对这种糊里糊涂的事情感觉很是不好,于是乎想仔细分析一下桌面字体阴影这个东西。

    配置文件位置: $HOME/.kde/share/config/kdesktoprc
    修改内容为:在[FMSettings]段添加如下内容(OSX的桌面阴影显示模式)
    ShadowParameters=0,1,16.0,192.0,2,4,0

    找了KDE3.5.6 的源码包kdebase 和 kdelibs,最后在/kdebase-3.5.6/kdesktop/这个文件夹下找到了一些有用的信息。这里面有几个与桌面阴影相关的几个文件。 分别是:

       kdesktopshadowsettings.h
       kdesktopshadowsettings.cpp
       kshadowsettings.h
       kshadowsettings.cpp
       kshadowengine.h
       kshadowengine.cpp
       kdesktop.kcfg

    前面六个是程序文件,最后一个kdesktop.kcfg是配置文件。
    先看了一下配置文件,找到了与设置阴影相关的部分如下:

    <entry key="ShadowEnabled" type="Bool">  
       //这里就是桌面“右键-->配置桌面...-->高级选项-->'启用阴影'”
       //如果选中“启用阴影”,则在KDE的桌面配置文件里会多出一个配置选项
       // "ShadowEnabled = true ",这样桌面字体才能够启用阴影。
        <default>true</default>
        <label>Enable text shadow</label>
        <whatsthis>Check here to enable a shadow outline around the desktop font.
                 This also improves the readability of the desktop text against
                 backgrounds of a similar color.
        </whatsthis>
    </entry>
    <entry key="ShadowParameters" type="String">
       // ShadowParameters是用来设置字体阴影的参数项,它来负责字体的阴影以什么样子来显示。
       // 默认情况下,这个参数是 '0,0,4.0,120.0,2,1,1,0,0,0' ,也就是KDE默认的阴影样式。
       // KDE默认的阴影看起来很硬,所以要设置阴影的显示,就需要从这几个数字上下手。
        <default>0,0,4.0,120.0,2,1,1,0,0,0</default>
        <label></label>
        <whatsthis></whatsthis>
        <!-- kdesktopshadowsettings.cpp:84 -->
        <!-- fromString(config->readEntry(SHADOW_CONFIG_ENTRY)); -->
       // 上面两个注释说明在文件 kdesktopshadowsettings.cpp中的第84行中,程序读取配置文件中
       // ShadowParameters的值。
    </entry>

    看过了上面配置文件的说明,虽然知道了字体阴影如何配置,但还是不懂那一串数字到底是什么意思,还需要继续看程序代码。在kdesktopshadowsettings.cpp中找到了83,84行,如下:

    if (config->hasKey(SHADOW_CONFIG_ENTRY))
        fromString(config->readEntry(SHADOW_CONFIG_ENTRY));

    这里并没有说明那些数字的意思,继续找之。在kdesktopshadowsettings.h中找到如下说明:

     /**
     * This implementation of FxData will read a the default configuration
     * file. The values used for shadow are frouped under "FX".
     * // 呵呵,frouped这个词是作者把grouped打错了,frouped不懂是什么意思。:)
     * The values are:
     *  Shadow.Algorithm:      the algorithm used for making the sahdow
     *  Shadow.Scale       the normailsation factor for veraging the sum
     *  Shadow.MaxOpacity       the maximum allowable opacity (255 = 100%opaque)
     *  Shadow.OffsetX       the X-coordinate offset (0 centered)
     *  Shadow.OffsetY         the Y-coordinate offset (0 centered)
     *  Shadow.Thickness       the shadow thickness (usually 3-5 px)
     *  Shadow.SelectionType   the selection type - inverse video or use
     *               the selection colours.
     *
     * 06-Feb-03: Added simple UID algorithm
     *
     */
   
    参数中Shadow.MaxOpacity定义阴影的透明度;Shadow.OffsetX, Shadow.OffsetY分别定义了阴影在X,Y坐标的偏移量;Shadow.Thickness定义了阴影的密度;Shadow.SelectionType定义了字体在选中的情况下显示类型,有反白显示和按选择颜色显示两种情况。这里Shadow.OffsetX,Shadow.OffsetY和Shadow.Thickness所对应的值单位为像素(px)。
   
    后面又参考了一下kshadowsettings.h,其中有一段代码字义了参数的顺序。如下:
   
         /**
         * Specifies the order of the options.
         * @see fromString
         */
        enum ConfigurationOrder
        {
            OFFSET_X = 0,
            OFFSET_Y = OFFSET_X + 1,
            MULTIPLICATION_FACTOR = OFFSET_Y + 1,
            MAX_OPACITY = MULTIPLICATION_FACTOR + 1,
            THICKNESS = MAX_OPACITY + 1,
            ALGORITHM = THICKNESS + 1,
            SELECTION_TYPE = ALGORITHM + 1
        };

    这说明,那一串数字按顺序依次为:
    OFFSET_X //X坐标偏移量
    OFFSET_Y //Y坐标偏移量
    MULTIPLICATION_FACTOR //阴影的繁殖系数
    MAX_OPACITY //透明度 0-255 之间,255是完全不透明
    THICKNESS //阴影的密度
    ALGORITHM //阴影显示所采用的算法
    SELECTION_TYPE //选择后阴影的显示方式

    同样在kshadowsettings.h中下面两段代码说明了可供选择的阴影算法和字体选中时显示方式。
        /**
         * The algorithm used.
         */
        enum Algorithm
        {
            DefaultDecay = 1,   ///< the default AXIS/DIAGONAL_FACTOR based alg
            DoubleLinearDecay,  ///< decay factor is 1/dx+dy
            RadialDecay,        ///< decay factor is 1/sqrt(dx*dx + dy*dy)
            NoDecay            ///< decay factor is 1 always
        };
       
        /**
         * The selected method used.
         */
        enum SelectionType
        {
            InverseVideoOnSelection = 0,    ///< when selected, the halo is on I/Video
            SelectionColorsOnSelection    ///< the halo is made w/ selected colors
        };

    到现在为至已经搞清楚了那一串字符串的意义了。
    如:
    ShadowParameters=0,1,16.0,192.0,2,4,0
    上面的参数意思是说,阴影的X坐标偏移量为0像素,Y坐标偏移量为1像素,繁殖系数为16.0,透明度为192.0,密度为2像素,显示阴影所采用的算法衰减系数为1,字体被选中时阴影的显示模式是0(反白显示)。

    网上有几个推荐参数配置,如下:
    KDE 3.2         2, 2, 4.0, 100.0, 2, 2, 1
    KDE 3.1         0, 0, 4.0, 255.0, 3, 0, 0
    OS X            0, 1, 16.0, 192.0, 2, 4, 0
    Windows XP      1, 1, 32.0, 139.0, 2, 4, 0
    Soft outline    0, 0, 4.0, 170.0, 1, 4, 0
   
    现在问题是搞明白了,但是有一点没搞清楚,在kdesktop.kcfg中说明了ShadowParameters参数中用逗号分开了10位数,但是整个程序代码中一直提到的只有7位。默认值 0,0,4.0,120.0,2,1,1,0,0,0 的最后三个0不知道是干什么用的,留着以后再研究了...

    后来又在KDE-apps上找到一个老外写的程序,通过图形界面来配置字体阴影的显示。
    http://kde-apps.org/content/show.php?content=53118

    按照OS X的阴影样式设置ShadowParameters=0,1,16.0,192.0,2,4,0 ;效果如下:
   

   

排行榜 更多 +
知否大学

知否大学

学习教育 下载
普益诠财富

普益诠财富

学习教育 下载
日赚三千金

日赚三千金

音乐节奏 下载