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

📄 rbdraw.cc

📁 一个共享源码的音频库4
💻 CC
字号:
// This file contains no license whatsoever. It is provided in the public domain as an example// of how to use the audio library//// Bruce Forsberg// forsberg@tns.net// //#include <stdio.h>#include <stdlib.h>#include "rbdraw.h"#define DRAW_WIDTH  150#define DRAW_HEIGHT  60GC rbdraw::_gc;int    rbdraw::_array_size = 0;double rbdraw::_db_array[32];rbdraw::rbdraw(   Widget parent,   Widget left,   Widget bottom){   Arg  args[20];   int  n;   XColor  red;   Display *dpy;   _array_size = 0;   dpy = XtDisplay(parent);   _black_pixel = BlackPixelOfScreen(XtScreen(parent));   _white_pixel = WhitePixelOfScreen(XtScreen(parent));   red.red = 65535;   red.green = 0;   red.blue = 0;   XAllocColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)), &red);   _red_pixel = red.pixel;   n = 0;   XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;   XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;   XtSetArg(args[n], XmNleftWidget, left); n++;   XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;   XtSetArg(args[n], XmNbottomWidget, bottom); n++;   XtSetArg(args[n], XmNwidth, DRAW_WIDTH); n++;   XtSetArg(args[n], XmNheight, DRAW_HEIGHT); n++;   XtSetArg(args[n], XmNbackground, _black_pixel); n++;   _rb_draw = XmCreateDrawingArea(parent, "Draw RB", args, n);   XtAddCallback(_rb_draw, XmNexposeCallback, (void (*)(_WidgetRec*, void*, void*))rbdraw::expose, this);   XtManageChild(_rb_draw);}rbdraw::~rbdraw(){}voidrbdraw::after_realize(){   XGCValues gcv;   gcv.foreground = _white_pixel;   gcv.background = _black_pixel;   _gc = XCreateGC (XtDisplay(_rb_draw), XtWindow(_rb_draw),      GCForeground | GCBackground, &gcv);}Widgetrbdraw::getWidget() const{   return (_rb_draw);}voidrbdraw::plot_spectrum(   int array_size,   double *db_array){   _array_size = array_size;   memcpy(_db_array, db_array, sizeof(double) * array_size);   rbdraw::expose(_rb_draw, (caddr_t)this, NULL);}voidrbdraw::expose(   Widget  w,   caddr_t client_data,   XmDrawingAreaCallbackStruct  *draw_struct){   Display *dis = XtDisplay(w);   Window win = XtWindow(w);   XTextItem text_item[1];   int  i;   int  width;   rbdraw * obj;   obj = (rbdraw *)client_data;   XSetForeground(dis, _gc, obj->_black_pixel);   XFillRectangle(dis, win, _gc, 0, 0, DRAW_WIDTH, DRAW_HEIGHT);   XSetForeground(dis, _gc, obj->_white_pixel);   // Write "Left Channel"   text_item[0].font = None;   text_item[0].delta = 0;   text_item[0].nchars = strlen("Left Channel");   text_item[0].chars = "Left Channel";   XSetForeground(dis, _gc, ((rbdraw *)client_data)->_white_pixel);   XDrawText(dis, win, _gc, 20, 10, text_item, 1);   if (_array_size != 0)   {      width = DRAW_WIDTH / _array_size;      XSetForeground(dis, _gc, obj->_red_pixel);      for (i = 0; i < _array_size-1; i++)      {         int db_int = (int)(_db_array[i]);         db_int += 60;         db_int = 60 - db_int;         if (db_int > 60)            db_int = 60;         else if (db_int < 0)            db_int = 0;         XFillRectangle(dis, win, _gc, i * width,            db_int, width-1, DRAW_HEIGHT);      }   }}

⌨️ 快捷键说明

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