// Picture.cpp: implementation of the Picture class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Picture.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ostream operator<<(ostream& o,Picture& p)
{
p.Display(o);
return o;
}
Picture operator+(Picture& p1,Picture& p2)
{
Picture p(p1);
p.RightAdd(p2);
return p;
}
//////////////////////////////////////////////////////////////////////////
Picture::Picture():m_width(0),m_height(0),m_pdata(NULL)//默认构造函数
{
}
Picture::Picture(const char*const*const arr ,int len)
{
int maxlen=0;
for (int i=0;i<len;i++)
{
maxlen = Picture::max(maxlen,strlen(arr[i]));
}
m_width = maxlen;//字符串长度,不包括 '\0'
m_height = len;
m_pdata = new char[m_width*m_height];
memset(m_pdata,0,m_width*m_height);
for (i=0;i<m_height;i++)
{
for (int j=0;arr[i][j]!='\0';j++)
{
m_pdata[i*m_width+j]=arr[i][j];
}
}
}
Picture::~Picture()
{
delete m_pdata;
}
Picture::Picture(const Picture& p)
{
m_width = p.m_width;
m_height= p.m_height;
m_pdata = new char[m_width*m_height];
memcpy(m_pdata,p.m_pdata,m_width*m_height);
}
Picture& Picture::operator =(const Picture& p)
{
if (this==&p)//自我赋值
{return *this;
}
delete m_pdata;
this->Picture::Picture(p);//把复制构造函数当普通函数使用
return *this;
}
//////////////////////////////////////////////////////////////////////////
void Picture::Display(ostream& o)
{
for (int i=0;i<m_height;i++)
{
for (int j=0;j<m_width;j++)
{
o<<position(i,j);
}
o<<endl;
}
}
//////////////////////////////////////////////////////////////////////////
Picture& Picture::ShowFrame(char jiao/* = */,char topbottom/* = */,char leftright/* = */)
{
m_jiao = jiao;
m_topbottom = topbottom;
m_leftright = leftright;
return frame();
}
Picture& Picture::frame()
{
int w = m_width + 2;
int h = m_height + 2;
char* pdata=new char[w*h];
memset(pdata,0,w*h);
for (int i=0;i<m_height;i++)
{
for (int j=0;j<m_width;j++)
{
pdata[(i+1)*w+j+1]=position(i,j);
}
}
delete m_pdata;
m_pdata = pdata;
m_width = w;
m_height = h;
kuang(0,0,w,h);
return *this;
}
Picture& Picture::LeftAdd(const Picture& p)
{
int w = m_width + p.m_width;
int h = Picture::max(m_height,p.m_height);
char* pdata = new char[w*h];
memset(pdata,0,w*h);
for (int i=0;i<m_height;i++)
{
for (int j=0;j<m_width;j++)
{
pdata[i*w+j+p.m_width] = position(i,j);
}
}
for (i=0;i<p.m_height;i++)
{
for (int j=0;j<p.m_width;j++)
{
pdata[i*w+j]=p.position(i,j);
}
}
m_width = w;
m_height =h;
delete m_pdata;
m_pdata = pdata;
return *this;
}
Picture& Picture::RightAdd(const Picture& p)
{
int w = m_width + p.m_width;
int h = Picture::max(m_height,p.m_height);
char* pdata = new char[w*h];
memset(pdata,0,w*h);
for (int i=0;i<m_height;i++)
{
for (int j=0;j<m_width;j++)
{
pdata[i*w+j] = position(i,j);
}
}
for (i=0;i<p.m_height;i++)
{
for (int j=0;j<p.m_width;j++)
{
pdata[i*w+j+m_width]=p.position(i,j);
}
}
m_width = w;
m_height =h;
delete m_pdata;
m_pdata = pdata;
return *this;
}
Picture& Picture::TopAdd(const Picture& p)
{
int w = Picture::max(m_width,p.m_width);
int h = m_height + p.m_height;
char* pdata = new char[w*h];
memset(pdata,0,w*h);
for (int i=0;i<m_height;i++)
{
for (int j=0;j<m_width;j++)
{
pdata[(i+p.m_height)*w+j] = position(i,j);
}
}
for (i=0;i<p.m_height;i++)
{
for (int j=0;j<p.m_width;j++)
{
pdata[i*w+j] = p.position(i,j);
}
}
m_height = h;
m_width = w;
delete m_pdata;
m_pdata = pdata;
return *this;
}
Picture& Picture::BottomAdd(const Picture& p)
{
int w = Picture::max(m_width,p.m_width);
int h = m_height + p.m_height;
char* pdata = new char[w*h];
memset(pdata,0,w*h);
for (int i=0;i<m_height;i++)
{
for (int j=0;j<m_width;j++)
{
pdata[i*w+j] = position(i,j);
}
}
for (i=0;i<p.m_height;i++)
{
for (int j=0;j<p.m_width;j++)
{
pdata[(i+m_height)*w+j] = p.position(i,j);
}
}
m_height = h;
m_width = w;
delete m_pdata;
m_pdata = pdata;
return *this;
}
iuan19
- 粉丝: 2
- 资源: 4
最新资源
- 基于mpc模型预测轨迹跟踪控制,总共包含两套仿真,一套是不加入四轮侧偏角软约束,一套是加入四轮侧偏角的软约束控制,通过carsim与simulink联合仿真发现加入侧偏角软约束在进行轨迹跟踪时,能够通
- 字节跳动人工智能模型DeepSeek:语言理解生成、多模态技术及其广泛应用与未来展望
- 排序算法研究: 快速排序(Quick Sort)原理及其Python实现解析
- java.抽象类与接口(解决方案).md
- 第1章 开始启程-你的第一行Android代码.pdf
- 深度学习中卷积神经网络(CNN)的基本原理及其应用
- 离网型 三相光伏 发电 主电路设计 控制电路设计 以及参数设计 Matlab SIMLINK 仿真 离网 并网 1.主电路设计:光伏boost模块 MPPT 储能双向DC-DC 逆变DC
- FileNotFoundException如何解决.md
- 使用Python正则表达式校验中国大陆手机号格式
- 第2'章 Kotlin语言.pdf
- Java毕业设计基于springboot的物业管理系统源码+数据库(高分项目)
- 第2章 先从看得到的入手,探究活动.pdf
- 第3章 软件也要拼脸蛋,UI开发的点点滴滴.pdf
- 基于javaweb的社区物资交易互助平台.zip
- 文章复现:拉盖尔高斯光束入射石英基底石墨烯涂层的透射光强分布特性研究
- DigitalPlat FreeDomain – Your Free Domain Awaits!
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈