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

📄 kled.cpp

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CPP
字号:
/* This file is part of the KDE libraries    Copyright (C) 1998 J鰎g Habenicht (j.habenicht@europemail.com)    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public License    along with this library; see the file COPYING.LIB.  If not, write to    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,    Boston, MA 02111-1307, USA.*/#define PAINT_BENCH#undef PAINT_BENCH#ifdef PAINT_BENCH#include <qdatetm.h>#include <stdio.h>#endif#include <qpainter.h>#include <qcolor.h>#include "kled.h"#include "kled.h"const QRgb  KLed::lightcolor[]={ 0x00FFFF, 0x00A5FF, 0x0000FF, 0x00FF00, 0xFF0000 },  KLed::darkcolor[] ={ 0x00B0B0, 0x0064A2, 0x000080, 0x008000, 0x800000 };KLed::KLed(Color ledcolor, QWidget *parent, const char *name)  : QWidget( parent, name),    led_state( On ),    led_color( ledcolor ),    led_look( round ){  current_color=(led_state ? lightcolor[led_color] : darkcolor[led_color]);}KLed::KLed(KLed::Color ledcolor, KLed::State state, KLed::Look look, QWidget *parent, const char *name )  : QWidget( parent, name),    led_state( state ),    led_color( ledcolor ),    led_look( look ){  current_color=(led_state ? lightcolor[led_color] : darkcolor[led_color]);}voidKLed::paintEvent(QPaintEvent *){#ifdef PAINT_BENCH  const int rounds = 1000;  QTime t;  t.start();  for (int i=0; i<rounds; i++) #endif  switch (led_look) {  case flat  : paintflat(); break;  case round : paintround(); break;  case sunken: paintsunken(); break;  }#ifdef PAINT_BENCH  int ready = t.elapsed();  debug("elapsed: %d msec. for %d rounds", ready, rounds);#endif}voidKLed::paintflat(){  QPainter p(this);  int x=this->x(), y=this->y(), w=width(), h=height();  // round the ellipse   if (w > h)    w = h;  else if (h > w)    h = w;  //  QRect ring1(x,y,w,h);  QColor c;  // draw light grey upper left circle  c.setRgb(0xCFCFCF);  p.setPen(c);  //  p.drawArc(x,y,w,h, 45*16, 180*16);  p.drawArc(x,y,w,h, 45*16, -180*16);  // draw white upper left circle  c.setRgb(0xFFFFFF);  p.setPen(c);  //  p.drawArc(x,y,w,h, 90*16, 90*16);  p.drawArc(x,y,w,h, 0, -90*16);  // draw dark grey lower right circle  c.setRgb(0xA0A0A0);  p.setPen(c);  //  p.drawArc(x,y,w,h, 45*16, -180*16);  p.drawArc(x,y,w,h, 45*16, 180*16);  // draw black lower right circle  c.setRgb(0x000000);  p.setPen(c);  //  p.drawArc(x,y,w,h, 0, -90*16);  p.drawArc(x,y,w,h, 90*16, 90*16);  // make led smaller for shading  w-=2; h-=2;  x++; y++;  // draw the flat led grounding  c.setRgb(current_color);  p.setPen(c);  p.setBrush(c);  p.drawPie(x,y,w,h,0,5760);}voidKLed::paintround(){  QPainter p(this);  int x=this->x(), y=this->y(), w=width(), h=height();  // round the ellipse   if (w > h)    w = h;  else if (h > w)    h = w;  //  QRect ring1(x,y,w,h);  QColor c;  // draw light grey upper left circle  c.setRgb(0xCFCFCF);  p.setPen(c);  //  p.drawArc(x,y,w,h, 45*16, 180*16);  p.drawArc(x,y,w,h, 45*16, -180*16);  // draw white upper left circle  c.setRgb(0xFFFFFF);  p.setPen(c);  //  p.drawArc(x,y,w,h, 90*16, 90*16);  p.drawArc(x,y,w,h, 0, -90*16);  // draw dark grey lower right circle  c.setRgb(0xA0A0A0);  p.setPen(c);  //  p.drawArc(x,y,w,h, 45*16, -180*16);  p.drawArc(x,y,w,h, 45*16, 180*16);  // draw black lower right circle  c.setRgb(0x000000);  p.setPen(c);  //  p.drawArc(x,y,w,h, 0, -90*16);  p.drawArc(x,y,w,h, 90*16, 90*16);  // make led smaller for shading  w-=2; h-=2;  x++; y++;  // draw the flat led grounding  c.setRgb(current_color);  p.setPen(c);  p.setBrush(c);  p.drawPie(x,y,w,h,0,5760);  // shrink the light on 2/3 the size  // x := x+ ( w - w*2/3)/2  x+=w/6;  y+=w/6;  // w := w*2/3  w*=2;  w/=3;  h=w;    // now draw the bright spot on the led  int light_quote = (100*3/w)+100;  while (w) {    c = c.light(light_quote);    p.setPen( c );    p.drawEllipse(x,y,w,h);    w--; h--;    if (!w)      break;    p.drawEllipse(x,y,w,h);    w--; h--;    if (!w)      break;    p.drawEllipse(x,y,w,h);    x++; y++; w--;h--;  }}voidKLed::paintsunken(){  QPainter p(this);  int x=this->x(), y=this->y(), w=width(), h=height();  // round the ellipse   if (w > h)    w = h;  else if (h > w)    h = w;  // 3 rings of shade  QRect ring1(x,y,w,h);  x++,y++;  w-=2;h-=2;  QRect ring2(x,y,w,h);  x++,y++;  w-=2;h-=2;  QRect ring3(x,y,w,h);  x++,y++;  w-=2;h-=2;  QColor c;  // look from upper left#define ARC_BLACK_RING1 15#define ARC_BLACK_RING2 25#define ARC_BLACK_RING3 45#define ARC_DGRAY_RING1 55#define ARC_DGRAY_RING2 80#define ARC_DGRAY_RING3 90  // look from lower right#define ARC_LGRAY_RING1 (180-ARC_DGRAY_RING1)#define ARC_LGRAY_RING2 (180-ARC_DGRAY_RING2)#define ARC_LGRAY_RING3 (180-ARC_DGRAY_RING3)#define ARC_WHITE_RING1 80#define ARC_WHITE_RING2 55#define ARC_WHITE_RING3 40  // draw upper left darkgray arc  c.setRgb(0xA0A0A0);  p.setPen(c);  p.drawArc(ring1, (135-ARC_DGRAY_RING1)*16, 2*ARC_DGRAY_RING1*16);  p.drawArc(ring2, (135-ARC_DGRAY_RING2)*16, 2*ARC_DGRAY_RING2*16);  p.drawArc(ring3, (135-ARC_DGRAY_RING3)*16, 2*ARC_DGRAY_RING3*16);  // draw upper left black arc above the darkgrey arc  c.setRgb(0x000000);  p.setPen(c);  p.drawArc(ring1, (135-ARC_BLACK_RING1)*16, 2*ARC_BLACK_RING1*16);  p.drawArc(ring2, (135-ARC_BLACK_RING2)*16, 2*ARC_BLACK_RING2*16);  p.drawArc(ring3, (135-ARC_BLACK_RING3)*16, 2*ARC_BLACK_RING3*16);  // draw lower right light gray arc  c.setRgb(0xCFCFCF);  p.setPen(c);  p.drawArc(ring1, (-45+ARC_LGRAY_RING1)*16, -2*ARC_LGRAY_RING1*16);  p.drawArc(ring2, (-45+ARC_LGRAY_RING2)*16, -2*ARC_LGRAY_RING2*16);  p.drawArc(ring3, (-45+ARC_LGRAY_RING3)*16, -2*ARC_LGRAY_RING3*16);  // draw lower right white arc  c.setRgb(0xFFFFFF);  p.setPen(c);  p.drawArc(ring1, (-45+ARC_WHITE_RING1)*16, -2*ARC_WHITE_RING1*16);  p.drawArc(ring2, (-45+ARC_WHITE_RING2)*16, -2*ARC_WHITE_RING2*16);  p.drawArc(ring3, (-45+ARC_WHITE_RING3)*16, -2*ARC_WHITE_RING3*16);  // draw the flat led grounding  c.setRgb(current_color);  p.setPen(c);  p.setBrush(c);  p.drawPie(x,y,w,h,0,5760);  // shrink the light on 2/3 the size  // x := x+ ( w - w*2/3)/2  x+=w/6;  y+=w/6;  // w := w*2/3  w*=2;  w/=3;  h=w;  // now draw the bright spot on the led    int light_quote = (100*3/w)+100;  while (w) {    c = c.light(light_quote);    p.setPen( c );    p.drawEllipse(x,y,w,h);    w--; h--;    if (!w)      break;    p.drawEllipse(x,y,w,h);    w--; h--;    if (!w)      break;    p.drawEllipse(x,y,w,h);    x++; y++; w--;h--;  }}#include "kled.moc"

⌨️ 快捷键说明

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