📄 graph.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "Graph.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
Graph::Graph()
{
pdparraysize=0;
pdp=0;
}
void __fastcall Graph::AttachPlot(Plotdata *pd)
{
Plotdata **tpdpa;
tpdpa = new Plotdata *[pdparraysize];
for(int i=0;i<pdparraysize;i++)
{
tpdpa[i]=pdp[i];
}
if(pdp){delete [] pdp;pdp=0;}
pdp=new Plotdata *[pdparraysize+1];
for(int i=0;i<pdparraysize;i++)
{
pdp[i]=tpdpa[i];
}
delete [] tpdpa;
pdp[pdparraysize]=pd;
pdparraysize++;
}
void __fastcall Graph::DisplayGraph(TImage *imgage)
{
int ix,iy;
Graphics::TBitmap *bm = new Graphics::TBitmap;
bm->Width = imgage->Width;
bm->Height = imgage->Height;
bm->HandleType = bmDIB;
bm->Canvas->Pen->Color=clGray;
switch (gSettings.DemodMajor.ConstalationSize)
{
case 16:
//16QAM constelation
bm->Canvas->MoveTo(bm->Width/2,0);
bm->Canvas->LineTo(bm->Width/2,bm->Height);
bm->Canvas->MoveTo(0,bm->Height/2);
bm->Canvas->LineTo(bm->Width,bm->Height/2);
bm->Canvas->MoveTo(bm->Width/4,0);
bm->Canvas->LineTo(bm->Width/4,bm->Height);
bm->Canvas->MoveTo(0,bm->Height/4);
bm->Canvas->LineTo(bm->Width,bm->Height/4);
bm->Canvas->MoveTo(0.75*bm->Width,0);
bm->Canvas->LineTo(0.75*bm->Width,bm->Height);
bm->Canvas->MoveTo(0,0.75*bm->Height);
bm->Canvas->LineTo(bm->Width,0.75*bm->Height);
for(int j=0;j<pdparraysize;j++)
{
for(int i=0;i<pdp[j]->size;i++)
{
ix=bm->Width/2+(int)(0.530330085*bm->Width*pdp[j]->x[i]); //0.5*3*sqrt(2)/4
iy=bm->Height/2-(int)(0.530330085*bm->Height*pdp[j]->y[i]);
if((ix>0)&&(iy>0)&&(ix<bm->Width)&&(iy<bm->Height))bm->Canvas->Pixels[ix][iy]=pdp[j]->color;
}
}
break;
case 64:
//for 64 symbol constelation
for(int i=1;i<=7;i++)
{
bm->Canvas->MoveTo((double)i*(double)bm->Width/8,0);
bm->Canvas->LineTo((double)i*(double)bm->Width/8,bm->Height);
bm->Canvas->MoveTo(0,(double)i*(double)bm->Height/8);
bm->Canvas->LineTo(bm->Width,(double)i*(double)bm->Height/8);
for(int j=0;j<pdparraysize;j++)
{
for(int i=0;i<pdp[j]->size;i++)
{
ix=bm->Width/2+(int)(0.618718433*bm->Width*pdp[j]->x[i]); //0.5*7*sqrt(2)/8
iy=bm->Height/2-(int)(0.618718433*bm->Height*pdp[j]->y[i]);
if((ix>0)&&(iy>0)&&(ix<bm->Width)&&(iy<bm->Height))bm->Canvas->Pixels[ix][iy]=pdp[j]->color;
}
}
}
break;
default :
// Process for all other cases.
;
}
imgage->Picture->Bitmap=bm;
delete bm;
pdparraysize=0;
if(pdp){delete [] pdp;pdp=0;}
}
Graph::~Graph()
{
if(pdp){delete [] pdp;pdp=0;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -