亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xcaption.cpp

?? 配合linux窗口管理器使用
?? CPP
字號:
/* vim:tabstop=4:expandtab:shiftwidth=4 *  * Idesk -- XCaption.cpp * * Copyright (c) 2002, Chris (nikon) (nikon@sc.rr.com) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *  *      Redistributions of source code must retain the above copyright *      notice, this list of conditions and the following disclaimer. *       *      Redistributions in binary form must reproduce the above copyright *      notice, this list of conditions and the following disclaimer in the *      documentation and/or other materials provided with the distribution. *       *      Neither the name of the <ORGANIZATION> nor the names of its *      contributors may be used to endorse or promote products derived from *      this software without specific prior written permission. * * (See the included file COPYING / BSD ) */#include "XCaption.h"#include "XIconWithShadow.h"XCaption::XCaption(AbstractContainer * c, AbstractIcon * iParent,                   AbstractConfig * con, AbstractIconConfig * iConfig)            : AbstractCaption(c, iParent, con, iConfig), FONTSHIFT(4){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    imlibData = xContainer->getImlibData();    spareRoot = xContainer->getSpareRoot();    visual = DefaultVisual(xContainer->getDisplay(),                            DefaultScreen( xContainer->getDisplay() ) );    cmap = DefaultColormap( xContainer->getDisplay(),                            DefaultScreen( xContainer->getDisplay() ) );    configure();    createFont();}XCaption::~XCaption(){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    XftColorFree( xContainer->getDisplay(), visual, cmap, &fontColor );    if (shadowOn)    {    XftColorFree( xContainer->getDisplay(), visual, cmap, &shadowFontColor );    }    XFreePixmap(xContainer->getDisplay(), buffer);    XFreeGC(xContainer->getDisplay(), gc);    XFreeGC(xContainer->getDisplay(), bufferGc);}void XCaption::configure(){    DesktopIconConfig * dIconConfig =        dynamic_cast<DesktopIconConfig *>(iconConfig);    //grab the text    text = iconConfig->getCaption();        //set boldness    if (dIconConfig->getBoldness())        boldVal = XFT_WEIGHT_BOLD;    else        boldVal = XFT_WEIGHT_MEDIUM;    //set shadow options    shadowOn = dIconConfig->isShadow();    shadowX = dIconConfig->getShadowX();    shadowY = dIconConfig->getShadowY();    shadowColor = dIconConfig->getShadowColor();    //captionOnHover    captionOnHover = dIconConfig->getCaptionOnHover();}void XCaption::createFont(){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    DesktopIconConfig * dIconConfig =        dynamic_cast<DesktopIconConfig *>(iconConfig);    font = XftFontOpen( xContainer->getDisplay(),                        DefaultScreen( xContainer->getDisplay()),                         XFT_FAMILY,                        XftTypeString,                        (char*)dIconConfig->getFont().c_str(),                        XFT_SIZE,                        XftTypeDouble,                        (double)dIconConfig->getFontSize(),                         XFT_WEIGHT, XftTypeInteger, boldVal,                        NULL );        XftColorAllocName(xContainer->getDisplay(), visual, cmap,                      (char*)dIconConfig->getFontColor().c_str(), &fontColor );    if (shadowOn)        XftColorAllocName(xContainer->getDisplay(), visual, cmap,                          (char*)shadowColor.c_str(), &shadowFontColor );}Window * XCaption::getWindow(){    return &window;}void XCaption::createWindow(){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    XSetWindowAttributes attr;    attr.override_redirect = True;    attr.event_mask = SubstructureRedirectMask |                      SubstructureNotifyMask   |                      ButtonPressMask          |                      ButtonReleaseMask        |                      PointerMotionMask        |                      EnterWindowMask          |                      LeaveWindowMask          |                      PropertyChangeMask       |                      ExposureMask;    XftTextExtents8( xContainer->getDisplay(), font, (XftChar8*)text.c_str(), text.length(), &fontInfo );    // fix window extents so shadow text is not cut    // TODO: fix window extents if shadow is negative:    // Would have to edit x and y of the window    width = fontInfo.width + FONTSHIFT;    height = font->height;    if (shadowOn)    {        width += shadowX > 0 ? shadowX : 0;        height += shadowY > 0 ? shadowY : 0;    }    window = XCreateWindow( xContainer->getDisplay(),                            xContainer->getRootWindow(),                            0,                            0,                            fontInfo.width + FONTSHIFT,                            font->height,                            0,                            CopyFromParent,                            CopyFromParent,                            CopyFromParent,                            CWOverrideRedirect|CWEventMask,                            &attr );    buffer = XCreatePixmap(xContainer->getDisplay(), window,                           fontInfo.width + FONTSHIFT, font->height,                           DefaultDepth(xContainer->getDisplay(),                                     DefaultScreen(xContainer->getDisplay())));    gc = XCreateGC(xContainer->getDisplay(), window, 0, 0);    bufferGc = XCreateGC(xContainer->getDisplay(), buffer, 0, 0);    XSetForeground(xContainer->getDisplay(), bufferGc, 0xffffff);    XSetLineAttributes(xContainer->getDisplay(), bufferGc, 2, LineSolid,                       CapRound, JoinRound);    getXftDrawHandle();}void XCaption::getXftDrawHandle(){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    fontDrawHandle = XftDrawCreate(xContainer->getDisplay(), buffer, visual,                                   cmap);}void XCaption::lowerWindow(){       XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    XLowerWindow( xContainer->getDisplay(), window );}void XCaption::draw(){       XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    XIconWithShadow * sIcon = dynamic_cast<XIconWithShadow *>(iconParent);        ImlibImage *textBackground;    int fX, fY;    // using the spareRoot image (the background image created at startup)     // instead of dynamically geting the window to speed things up.        fX = iconParent->getX() + ( iconParent->getWidth() - fontInfo.width )/2;    fY = iconParent->getY() + iconParent->getHeight() + FONTSHIFT;    textBackground = Imlib_crop_and_clone_image(imlibData, spareRoot, fX, fY,                                                fontInfo.width + FONTSHIFT,                                                font->height);    Imlib_paste_image(imlibData, textBackground, buffer, 0, 0,                      fontInfo.width + FONTSHIFT, font->height);    Imlib_kill_image(imlibData, textBackground);    // if the icon shadow is enabled and the shadow is visible underneath the    // text window    if (sIcon &&        sIcon->getShadowX() > fX - sIcon->getWidth() &&        sIcon->getShadowY() > fY - sIcon->getHeight() &&        sIcon->getShadowX() < fX + sIcon->getWidth() &&        sIcon->getShadowY() < fY + sIcon->getHeight() )            sIcon->renderShadowToImage(buffer, fX, fY);            updateText();    XMoveWindow( xContainer->getDisplay(), window, fX, fY );        //apply the buffer to the window    XSetFillStyle(xContainer->getDisplay(), gc, FillTiled);    XSetTile(xContainer->getDisplay(), gc, buffer);    XFillRectangle(xContainer->getDisplay(), window, gc, 0, 0,            fontInfo.width + FONTSHIFT, font->height);}void XCaption::updateText(){       XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);        // unnecessary with the double buffering    //XClearWindow( xContainer->getDisplay(), buffer );        XSetForeground(xContainer->getDisplay(), gc, 0xffffff);    XSetLineAttributes(xContainer->getDisplay(), gc, 2, LineSolid, CapRound,                       JoinRound);    XDrawArc(xContainer->getDisplay(), window, gc, 0, 3, width, height,            0, 0);        if (shadowOn)        XftDrawString8( fontDrawHandle, &shadowFontColor, font, FONTSHIFT/2 + shadowX, font->ascent + shadowY, (XftChar8*)text.c_str(), text.length() );    XftDrawString8( fontDrawHandle, &fontColor, font, FONTSHIFT/2, font->ascent, (XftChar8*)text.c_str(), text.length() );}int XCaption::getFontWidth(){    return fontInfo.width;}int XCaption::getFontHeight(){    return font->height;}void XCaption::mapWindow(){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    XMapWindow( xContainer->getDisplay(), window );}void XCaption::initMapWindow(){    if (!captionOnHover)        mapWindow();}void XCaption::unmapWindow(){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    XUnmapWindow( xContainer->getDisplay(), window );}void XCaption::moveWindow(int xC, int yC){    XDesktopContainer * xContainer =        dynamic_cast<XDesktopContainer *>(container);    XMoveWindow( xContainer->getDisplay(), window, xC, yC );}void XCaption::mouseOverEffect(){    if (captionOnHover)        mapWindow();}void XCaption::mouseOffEffect(){    if (captionOnHover)        unmapWindow();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区在线观看| 国产精品久久久久影院老司| 成人蜜臀av电影| 久久国产精品第一页| 亚洲v日本v欧美v久久精品| 国产精品久线观看视频| 欧美国产国产综合| 欧美精品一区二区三区在线| 国产福利一区二区三区视频| 久久精品国产亚洲aⅴ| 日韩一区欧美二区| 婷婷成人激情在线网| 中文字幕在线观看不卡| 亚洲特黄一级片| 亚洲高清视频在线| 日韩二区三区四区| 国产自产高清不卡| 国产成人在线视频播放| 成人av网址在线| 欧美午夜一区二区三区| 日韩一区二区电影在线| 国产午夜精品一区二区三区四区| 555www色欧美视频| 久久久久久久久久久久久久久99 | 色哦色哦哦色天天综合| 欧美性做爰猛烈叫床潮| 欧美精品久久99久久在免费线| 欧美成人aa大片| 亚洲视频精选在线| 国产精品视频九色porn| 日韩免费看网站| 1024成人网色www| 久久国产精品无码网站| 国产一区二区在线看| 国产精品一区二区久久精品爱涩| 91麻豆国产在线观看| 久久日一线二线三线suv| 亚洲自拍偷拍网站| 成人激情综合网站| 久久精品亚洲一区二区三区浴池 | 日韩亚洲欧美一区| 亚洲精品国产成人久久av盗摄 | 91福利在线观看| 国产欧美日产一区| 久久精品国产亚洲一区二区三区| 欧美在线不卡视频| 亚洲精品v日韩精品| 97久久久精品综合88久久| 日本一区二区三区电影| 欧美aaa在线| 欧美mv日韩mv国产网站| 久久精品国产精品亚洲红杏| 日韩欧美亚洲一区二区| 亚洲综合色婷婷| 欧美日韩另类国产亚洲欧美一级| 综合久久久久久久| 91国产成人在线| 亚洲成人1区2区| 欧美一区二区三区在线观看| 久久精品夜色噜噜亚洲a∨| 国产精品久久久久天堂| 91丨porny丨国产入口| 一区二区在线观看视频| 在线精品视频小说1| 麻豆精品精品国产自在97香蕉| 欧美一区二区三区成人| 天天综合网天天综合色| 久久日韩粉嫩一区二区三区| 国产精品亚洲午夜一区二区三区| 国产精品不卡视频| 欧美性猛片xxxx免费看久爱| 久久99久久99小草精品免视看| 97久久精品人人做人人爽| 一区二区在线观看av| 欧美无砖专区一中文字| 国产一区91精品张津瑜| 亚洲国产精品一区二区www| 欧美一区二区视频在线观看2020 | 91美女在线视频| 美女看a上一区| 一区二区三区中文在线| 日本一二三不卡| av不卡在线播放| 午夜精品一区在线观看| 中文字幕精品综合| 久久午夜国产精品| 日韩视频123| 欧美三级一区二区| 99在线热播精品免费| 激情都市一区二区| 日韩福利电影在线| 亚洲成人动漫av| 久久先锋资源网| 精品久久久久一区| 欧美xxxx在线观看| 精品日韩99亚洲| 国产v综合v亚洲欧| 亚洲综合色噜噜狠狠| 亚洲免费观看高清完整版在线观看| 久久久综合激的五月天| 国产午夜精品一区二区| 精品久久免费看| 日本一区二区三区四区在线视频 | 在线看一区二区| 欧美日韩精品欧美日韩精品| 波多野结衣一区二区三区| 岛国av在线一区| 欧美自拍偷拍一区| 日韩免费视频一区| 欧美国产乱子伦 | 夜夜精品视频一区二区| 午夜精品免费在线| 麻豆精品久久精品色综合| 国产一区二区三区不卡在线观看| 国产99久久久国产精品免费看 | 欧美在线一二三| 欧美成人伊人久久综合网| 国产精品美女视频| 亚洲国产wwwccc36天堂| 青椒成人免费视频| 成av人片一区二区| 成人av电影在线观看| 欧美久久高跟鞋激| 亚洲丝袜自拍清纯另类| 日本成人超碰在线观看| 91久久一区二区| 久久久久久久久久久久久女国产乱| 亚洲视频一区在线观看| 国模大尺度一区二区三区| 欧美性xxxxxxxx| 亚洲综合网站在线观看| 成人小视频免费观看| 久久亚洲精品国产精品紫薇| 欧美激情一区二区三区蜜桃视频 | 亚洲精品一区二区三区影院| 久久久久久99精品| 国产一区视频网站| 2020国产精品| 久久精品国产免费| 精品国产乱码久久久久久牛牛 | 亚洲免费观看在线观看| 色哟哟在线观看一区二区三区| 久久久高清一区二区三区| 国产精品一区免费在线观看| 久久久不卡影院| 色婷婷久久久综合中文字幕| 日韩影院在线观看| 国产精品色哟哟网站| 欧美美女一区二区在线观看| 国产激情视频一区二区三区欧美| 亚洲欧美日韩人成在线播放| 欧美精选在线播放| av色综合久久天堂av综合| 奇米精品一区二区三区四区| 中文字幕成人网| 精品剧情v国产在线观看在线| 波波电影院一区二区三区| 日韩综合一区二区| 亚洲国产成人一区二区三区| 欧美精选一区二区| 色综合久久久久综合99| 国产主播一区二区| 蜜臀久久久久久久| 性久久久久久久| 天天综合日日夜夜精品| 亚洲人一二三区| 国产精品国产三级国产aⅴ无密码| 欧美精品99久久久**| 欧美日韩成人综合| 91黄色小视频| 99久久婷婷国产综合精品电影 | 色欧美片视频在线观看 | youjizz久久| 国产成人精品亚洲日本在线桃色| 久久精品免费看| 日本aⅴ免费视频一区二区三区| 综合亚洲深深色噜噜狠狠网站| 国产日韩欧美激情| 久久精品一二三| 国产精品国产三级国产三级人妇| 久久日一线二线三线suv| 久久精品亚洲精品国产欧美kt∨ | 蜜桃久久久久久| 午夜精品久久一牛影视| 日本中文字幕一区二区视频| 日韩国产精品久久久| 国产一区二区在线看| 成a人片亚洲日本久久| 91亚洲永久精品| 欧美午夜精品久久久久久超碰| 欧美日韩精品一区视频| 日韩一区二区在线免费观看| 久久亚洲一区二区三区明星换脸| 亚洲国产成人一区二区三区| 亚洲久草在线视频| 中文字幕在线不卡视频| 亚洲成人av福利| 丁香啪啪综合成人亚洲小说 | 成人免费一区二区三区在线观看| 《视频一区视频二区|