Chinaunix首页 | 论坛 | 博客
  • 博客访问: 567213
  • 博文数量: 826
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 18:09
文章分类

全部博文(826)

文章存档

2011年(1)

2008年(825)

我的朋友

分类: LINUX

2008-08-22 18:18:27

 
 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是配置文件。
先看了一下配置文件,找到了与设置阴影相关的部分如下:


//这里就是桌面“右键-->配置桌面...-->高级选项-->''启用阴影''”
//如果选中“启用阴影”,则在KDE的桌面配置文件里会多出一个配置选项
//"ShadowEnabled=true",这样桌面字体才能够启用阴影。
true

Checkheretoenableashadowoutlinearoundthedesktopfont.
Thisalsoimprovesthereadabilityofthedesktoptextagainst
backgroundsofasimilarcolor.



//ShadowParameters是用来设置字体阴影的参数项,它来负责字体的阴影以什么样子来显示。
//默认情况下,这个参数是''0,0,4.0,120.0,2,1,1,0,0,0'',也就是KDE默认的阴影样式。
//KDE默认的阴影看起来很硬,所以要设置阴影的显示,就需要从这几个数字上下手。
0,0,4.0,120.0,2,1,1,0,0,0




//上面两个注释说明在文件kdesktopshadowsettings.cpp中的第84行中,程序读取配置文件中
//ShadowParameters的值。


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

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

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

/**
*ThisimplementationofFxDatawillreadathedefaultconfiguration
*file.Thevaluesusedforshadowarefroupedunder"FX".
*//呵呵,frouped这个词是作者把grouped打错了,frouped不懂是什么意思。:)
*Thevaluesare:
*Shadow.Algorithm:thealgorithmusedformakingthesahdow
*Shadow.Scalethenormailsationfactorforveragingthesum
*Shadow.MaxOpacitythemaximumallowableopacity(255=100%opaque)
*Shadow.OffsetXtheX-coordinateoffset(0centered)
*Shadow.OffsetYtheY-coordinateoffset(0centered)
*Shadow.Thicknesstheshadowthickness(usually3-5px)
*Shadow.SelectionTypetheselectiontype-inversevideooruse
*theselectioncolours.
*
*06-Feb-03:AddedsimpleUIDalgorithm
*
*/

参数中Shadow.MaxOpacity定义阴影的透明度;Shadow.OffsetX,Shadow.OffsetY分别定义了阴影在X,Y坐标的偏移量;Shadow.Thickness定义了阴影的密度;Shadow.SelectionType定义了字体在选中的情况下显示类型,有反白显示和按选择颜色显示两种情况。这里Shadow.OffsetX,Shadow.OffsetY和Shadow.Thickness所对应的值单位为像素(px)。

后面又参考了一下kshadowsettings.h,其中有一段代码字义了参数的顺序。如下:

/**
*Specifiestheorderoftheoptions.
*@seefromString
*/
enumConfigurationOrder
{
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中下面两段代码说明了可供选择的阴影算法和字体选中时显示方式。
/**
*Thealgorithmused.
*/
enumAlgorithm
{
DefaultDecay=1,///DoubleLinearDecay,///RadialDecay,///NoDecay///};

/**
*Theselectedmethodused.
*/
enumSelectionType
{
InverseVideoOnSelection=0,///SelectionColorsOnSelection///};

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

网上有几个推荐参数配置,如下:
KDE3.22,2,4.0,100.0,2,2,1
KDE3.10,0,4.0,255.0,3,0,0
OSX0,1,16.0,192.0,2,4,0
WindowsXP1,1,32.0,139.0,2,4,0
Softoutline0,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上找到一个老外写的程序,通过图形界面来配置字体阴影的显示。


按照OSX的阴影样式设置ShadowParameters=0,1,16.0,192.0,2,4,0

阅读(852) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~