📄 grid.cpp
字号:
#include "Grid.h"
GridInfo::GridInfo(int n)
{
num = n;
m_Info = new String[n];
}
GridInfo::~GridInfo()
{
// if (num != 1)
delete [] m_Info;
// m_Info = NULL;
}
Grid::Grid()
{
gi = new GridInfo(1);
gi->m_Info[0] = " ";
height = minHeight = 1;
width = minWidth = 1;
}
Grid::~Grid()
{
delete gi;
// gi = NULL;
}
void Grid::SetWidth(int nWidth)
{
if (nWidth < minWidth)
return;
int i, begin, last;
if (nWidth > width)
{
for (i = 0; i < height; i++)
{
last = (nWidth - width) / 2;
begin = nWidth - width - last;
gi->m_Info[i] = String(' ', begin) + gi->m_Info[i] + String(' ', last);
}
}
else if (nWidth < width)
{
for (i = 0; i < height; i++)
{
last = (width - nWidth) / 2;
begin = width - nWidth - last;
last = width - last - 1;
gi->m_Info[i] = gi->m_Info[i].getSub(begin, last);
}
}
width = nWidth;
}
void Grid::SetHeight(int nHeight)
{
if (nHeight < minHeight)
return;
int i, beg, last;
GridInfo* temp;
if (nHeight > height)
{
last = (nHeight - height) / 2;
beg = nHeight - height - last;
temp = new GridInfo(nHeight);
for (i = 0; i < height; i++)
temp->m_Info[i + beg] = gi->m_Info[i];
for (i = 0; i < beg; i++)
temp->m_Info[i] = String(' ', width);
for (i = 0; i < last; i++)
temp->m_Info[i + beg + height] = String(' ', width);
delete gi;
gi = temp;
}
else if (nHeight < height)
{
last = (height - nHeight) / 2;
beg = height - nHeight - last;
temp = new GridInfo(nHeight);
for (i = 0; i < nHeight; i++)
temp->m_Info[i] = gi->m_Info[i + beg];
delete gi;
gi = temp;
}
height = nHeight;
}
void Grid::SetGridInfo(const GridInfo *agi)
{
int i, j;
int begin, last;
minWidth = 0;
delete gi;
gi = new GridInfo(agi->num);
for (i = 0; i < gi->num; i++)
{
gi->m_Info[i] = agi->m_Info[i];
if (minWidth < gi->m_Info[i].getlenth())
minWidth = gi->m_Info[i].getlenth();
}
minHeight = gi->num;
width = minWidth;
height = minHeight;
if (gi->num == 1 && gi->m_Info[0].getlenth() == 0)
{
gi->m_Info[0] = ' ';
height = minHeight = 1;
width = minWidth = 1;
}
for (i = 0; i < gi->num; i++)
{
j = gi->m_Info[i].getlenth();
if (j < minWidth)
{
last = (minWidth - j) / 2;
begin = minWidth - j - last;
gi->m_Info[i] = String(' ', begin) + gi->m_Info[i] + String(' ', last);
}
}
}
int Grid::GetHeight() const
{
return height;
}
int Grid::GetWidth() const
{
return width;
}
GridInfo* Grid::GetInfo() const
{
return gi;
}
/*
std::ostream& operator<<(std::ostream& out, const Grid& gr)
{
for (int i = 0; i< gr.height; i++)
out << gr.gi->m_Info[i] << std::endl;
return out;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -