📄 jr.cpp
字号:
/********************************************************************
Created: 2006/12/11 12:32
FileName: JR.cpp
Author: Jar 包杰
Purpose: 读取显示J压缩文件
Copyright By Jar 2006.12
*********************************************************************/
#include "stdafx.h"
#include "JR.h"
// 声明串行化过程
IMPLEMENT_SERIAL(CJR, CObject, 0);
CJR::CJR()
{
FilePath = "";
m_pJFH = NULL;
}
CJR::~CJR()
{
if(m_pJFH != NULL)
{
m_pJFH = NULL;
}
}
/*************************************************
Function: JRead
Description: 读取J文件头
Input: CFile *pFile
Output:
Return: BOOL 成功返回TRUE,否则返回FALSE
Others: 读取J文件头
*************************************************/
BOOL CJR::JRead(CFile *pFile)
{
int nSize;
//创建J文件头
nSize = sizeof(JFILEHEADER);
m_pJFH = (LPJFILEHEADER) new BYTE[nSize];
//读取文件头
pFile->Read(m_pJFH, sizeof(JFILEHEADER));
// 判断是否是J格式的压缩图像
if(m_pJFH->JType != J_HEADER_MARKER)
return FALSE;
FilePath = pFile->GetFilePath();
return TRUE;
}
/*************************************************
Function: JDraw
Description: 显示J压缩图像
Input: *pDC
Output:
Return: BOOL 成功返回TRUE,否则返回FALSE
Others: 读取J文件数据并显示
*************************************************/
BOOL CJR::JDraw(CDC *pDC)
{
//创建文件
CFile JFile;
JFile.Open(FilePath,CFile::modeRead);
JFile.Seek(sizeof(JFILEHEADER),CFile::begin);
//读取压缩数据并显示
int i = 0,j = 0,k = 0;
WORD tmp;
WORD n = -1;
JFile.Read(&tmp,sizeof(WORD));
for (i = 0;i < m_pJFH->JHeight;i++)
{
for (j = 0;j < m_pJFH->JWidth;j++)
{
if (k%2 == 1)
pDC->SetPixel(j,m_pJFH->JHeight-i,RGB(m_pJFH->FirstColor[0],m_pJFH->FirstColor[1],m_pJFH->FirstColor[2]));
else
pDC->SetPixel(j,m_pJFH->JHeight-i,RGB(m_pJFH->OpposeColor[0],m_pJFH->OpposeColor[1],m_pJFH->OpposeColor[2]));
n++;
if (n == tmp)
{
n = 0;
k++;
JFile.Read(&tmp,sizeof(WORD));
}
}
}
JFile.Close();
return TRUE;
}
//串行化
void CJR::Serialize(CArchive &ar)
{
JRead(ar.GetFile());
}
//获取文件头指针
LPJFILEHEADER CJR::GetJFH()
{
return m_pJFH;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -