Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge v0.2.2 from RubyForge, fix compile error in ruby 1.9.2 #1

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
*.log
*.swp
*.swo
*.o
*.gem
.config
pkg/
InstalledFiles
ext/rqr/Makefile
ext/rqr/QR.bundle
ext/rqr/conftest.dSYM/
4 changes: 2 additions & 2 deletions config/hoe.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def rubyforge_username
REV = nil
# UNCOMMENT IF REQUIRED:
# REV = `svn info`.each {|line| if line =~ /^Revision:/ then k,v = line.split(': '); break v.chomp; else next; end} rescue nil
VERS = Rqr::VERSION::STRING + (REV ? ".#{REV}" : "")
VERS = RQR::VERSION::STRING + (REV ? ".#{REV}" : "")
RDOC_OPTS = ['--quiet', '--title', 'rqr documentation',
"--opname", "index.html",
"--line-numbers",
Expand Down Expand Up @@ -68,4 +68,4 @@ def extra_deps
CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
$hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
$hoe.rsync_args = '-av --delete --ignore-errors'
$hoe.rsync_args = '-av --delete --ignore-errors'
398 changes: 199 additions & 199 deletions ext/rqr/QR_Encode.cpp

Large diffs are not rendered by default.

94 changes: 47 additions & 47 deletions ext/rqr/QR_Encode.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//---(1)ここから-------------------------
//// QR_Encode.h : CQR_Encode クラス宣言およびインターフェイス定義
//---(1)��������-------------------------
//// QR_Encode.h : CQR_Encode �N���X�錾����уC���^�[�t�F�C�X��`
//// Date 2006/05/17 Ver. 1.12 [Class Ver.1.22] Psytec Inc.
//
//#if !defined(AFX_QR_ENCODE_H__AC886DF7_C0AE_4C9F_AC7A_FCDA8CB1DD37__INCLUDED_)
Expand All @@ -8,111 +8,111 @@
//#if _MSC_VER > 1000
//#pragma once
//#endif // _MSC_VER > 1000
//---(1)ここまでをコメントアウト-----------
//---(1)�����܂ł��R�����g�A�E�g-----------

//---(2)ここから-----------
//---(2)��������-----------
#ifndef __QR_ENCODER__
#define __QR_ENCODER__
#include "win2ansi.h"
//---(2)ここまでを追加-----------
//---(2)�����܂ł�lj�-----------

/////////////////////////////////////////////////////////////////////////////
// 定数
// �萔

// 誤り訂正レベル
// ���������x��
#define QR_LEVEL_L 0
#define QR_LEVEL_M 1
#define QR_LEVEL_Q 2
#define QR_LEVEL_H 3

// データモード
// �f�[�^���[�h
#define QR_MODE_NUMERAL 0
#define QR_MODE_ALPHABET 1
#define QR_MODE_8BIT 2
#define QR_MODE_KANJI 3

// バージョン(型番)グループ
#define QR_VRESION_S 0 // 1 9
#define QR_VRESION_M 1 // 10 26
#define QR_VRESION_L 2 // 27 40
// �o�[�W����(�^��)�O���[�v
#define QR_VRESION_S 0 // 1 �` 9
#define QR_VRESION_M 1 // 10 �` 26
#define QR_VRESION_L 2 // 27 �` 40

#define MAX_ALLCODEWORD 3706 // 総コードワード数最大値
#define MAX_DATACODEWORD 2956 // データコードワード最大値(バージョン40-L)
#define MAX_CODEBLOCK 153 // ブロックデータコードワード数最大値(RSコードワードを含む)
#define MAX_MODULESIZE 177 // 一辺モジュール数最大値
#define MAX_ALLCODEWORD 3706 // ���R�[�h���[�h���ő�l
#define MAX_DATACODEWORD 2956 // �f�[�^�R�[�h���[�h�ő�l(�o�[�W����40-L)
#define MAX_CODEBLOCK 153 // �u���b�N�f�[�^�R�[�h���[�h���ő�l(�q�r�R�[�h���[�h���܂�)
#define MAX_MODULESIZE 177 // ��Ӄ��W���[�����ő�l

// ビットマップ描画時マージン
// �r�b�g�}�b�v�`�掞�}�[�W��
#define QR_MARGIN 4


/////////////////////////////////////////////////////////////////////////////
typedef struct tagRS_BLOCKINFO
{
int ncRSBlock; // RSブロック数
int ncAllCodeWord; // ブロック内コードワード数
int ncDataCodeWord; // データコードワード数(コードワード数 - RSコードワード数)
int ncRSBlock; // �q�r�u���b�N��
int ncAllCodeWord; // �u���b�N���R�[�h���[�h��
int ncDataCodeWord; // �f�[�^�R�[�h���[�h��(�R�[�h���[�h�� - �q�r�R�[�h���[�h��)

} RS_BLOCKINFO, *LPRS_BLOCKINFO;


/////////////////////////////////////////////////////////////////////////////
// QRコードバージョン(型番)関連情報
// QR�R�[�h�o�[�W����(�^��)�֘A���

typedef struct tagQR_VERSIONINFO
{
int nVersionNo; // バージョン(型番)番号(1〜40)
int ncAllCodeWord; // 総コードワード数
int nVersionNo; // �o�[�W����(�^��)�ԍ�(1�`40)
int ncAllCodeWord; // ���R�[�h���[�h��

// 以下配列添字は誤り訂正率(0 = L, 1 = M, 2 = Q, 3 = H)
int ncDataCodeWord[4]; // データコードワード数(総コードワード数 - RSコードワード数)
// �ȉ��z��Y���͌�������(0 = L, 1 = M, 2 = Q, 3 = H)
int ncDataCodeWord[4]; // �f�[�^�R�[�h���[�h��(���R�[�h���[�h�� - �q�r�R�[�h���[�h��)

int ncAlignPoint; // アライメントパターン座標数
int nAlignPoint[6]; // アライメントパターン中心座標
int ncAlignPoint; // �A���C�����g�p�^�[�����W��
int nAlignPoint[6]; // �A���C�����g�p�^�[�����S���W

RS_BLOCKINFO RS_BlockInfo1[4]; // RSブロック情報(1)
RS_BLOCKINFO RS_BlockInfo2[4]; // RSブロック情報(2)
RS_BLOCKINFO RS_BlockInfo1[4]; // �q�r�u���b�N���(1)
RS_BLOCKINFO RS_BlockInfo2[4]; // �q�r�u���b�N���(2)

} QR_VERSIONINFO, *LPQR_VERSIONINFO;


/////////////////////////////////////////////////////////////////////////////
// CQR_Encode クラス
// CQR_Encode �N���X

class CQR_Encode
{
// 構築/消滅
// �\�z/����
public:
CQR_Encode();
~CQR_Encode();

public:
int m_nLevel; // 誤り訂正レベル
int m_nVersion; // バージョン(型番)
BOOL m_bAutoExtent; // バージョン(型番)自動拡張指定フラグ
int m_nMaskingNo; // マスキングパターン番号
int m_nLevel; // ���������x��
int m_nVersion; // �o�[�W����(�^��)
BOOL m_bAutoExtent; // �o�[�W����(�^��)�����g���w��t���O
int m_nMaskingNo; // �}�X�L���O�p�^�[���ԍ�

public:
int m_nSymbleSize;
BYTE m_byModuleData[MAX_MODULESIZE][MAX_MODULESIZE]; // [x][y]
// bit5:機能モジュール(マスキング対象外)フラグ
// bit4:機能モジュール描画データ
// bit1:エンコードデータ
// bit0:マスク後エンコード描画データ
// 20hとの論理和により機能モジュール判定、11hとの論理和により描画(最終的にはBOOL値化)
// bit5:�@�\���W���[���i�}�X�L���O�ΏۊO�j�t���O
// bit4:�@�\���W���[���`��f�[�^
// bit1:�G���R�[�h�f�[�^
// bit0:�}�X�N��G���R�[�h�`��f�[�^
// 20h�Ƃ̘_���a�ɂ��@�\���W���[������A11h�Ƃ̘_���a�ɂ��`��i�ŏI�I�ɂ�BOOL�l���j

private:
int m_ncDataCodeWordBit; // データコードワードビット長
BYTE m_byDataCodeWord[MAX_DATACODEWORD]; // 入力データエンコードエリア
int m_ncDataCodeWordBit; // �f�[�^�R�[�h���[�h�r�b�g��
BYTE m_byDataCodeWord[MAX_DATACODEWORD]; // ���̓f�[�^�G���R�[�h�G���A

int m_ncDataBlock;
BYTE m_byBlockMode[MAX_DATACODEWORD];
int m_nBlockLength[MAX_DATACODEWORD];

int m_ncAllCodeWord; // 総コードワード数(RS誤り訂正データを含む)
BYTE m_byAllCodeWord[MAX_ALLCODEWORD]; // 総コードワード算出エリア
BYTE m_byRSWork[MAX_CODEBLOCK]; // RSコードワード算出ワーク
int m_ncAllCodeWord; // ���R�[�h���[�h��(�q�r�������f�[�^���܂�)
BYTE m_byAllCodeWord[MAX_ALLCODEWORD]; // ���R�[�h���[�h�Z�o�G���A
BYTE m_byRSWork[MAX_CODEBLOCK]; // �q�r�R�[�h���[�h�Z�o���[�N

// データエンコード関連ファンクション
// �f�[�^�G���R�[�h�֘A�t�@���N�V����
public:
BOOL EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMaskingNo, LPCSTR lpsSource, int ncSource = 0);

Expand All @@ -133,7 +133,7 @@ class CQR_Encode

void GetRSCodeWord(LPBYTE lpbyRSWork, int ncDataCodeWord, int ncRSCodeWord);

// モジュール配置関連ファンクション
// ���W���[���z�u�֘A�t�@���N�V����
private:
void FormatModule();

Expand Down
17 changes: 13 additions & 4 deletions ext/rqr/extconf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,21 @@
=end
require 'mkmf'
require 'rbconfig'
$libs = append_library($libs, "supc++")

if File.exists?('/sw')
DARWIN_PORT_DIR = '/sw'
if have_library("supc++")
$libs = append_library($libs, "supc++")
end

FINK_DIR = '/sw'
MACPORT_DIR = '/opt/local'
HOMEBREW_DIR = '/usr/local'

if File.exists?(FINK_DIR)
DARWIN_PORT_DIR = FINK_DIR
elsif File.exists?(MACPORT_DIR)
DARWIN_PORT_DIR = MACPORT_DIR
else
DARWIN_PORT_DIR = '/opt/local'
DARWIN_PORT_DIR = HOMEBREW_DIR
end

if RUBY_PLATFORM =~ /darwin/
Expand Down
32 changes: 23 additions & 9 deletions ext/rqr/qr_draw.h
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
#ifndef _QR_DRAW_
#define _QR_DRAW_

#define MARGIN_SIZE 4 /* マージンサイズ */
#define MAX_MODULESIZE 177 /* データバイト列の領域サイズ */
#define MARGIN_SIZE 4 /* �}�[�W���T�C�Y */
#define MAX_MODULESIZE 177 /* �f�[�^�o�C�g��̗̈�T�C�Y */

//=============================================================================
// QRDraw クラス
// QRDraw �N���X
//=============================================================================
class QRDraw
{
public:
virtual ~QRDraw(){}
QRDraw(){
this->bit_image=NULL;
}

virtual ~QRDraw(){
this->close();
}

void setup(char *filename, int modulesize, int symbolsize){
this->msize = modulesize;
Expand All @@ -20,15 +26,23 @@ class QRDraw
}

protected:
unsigned char **bit_image; //ピクセルイメージを格納する
int msize; // 1ドットを表現するピクセル数(=modulesize)
int rsize; // マージンを含めた実際のイメージの一辺
int ssize; // シンボルサイズ(マージンを含めない、ドットの個数)
char *filename; // 保存するファイル名
unsigned char **bit_image; //�s�N�Z���C���[�W���i�[����
int msize; // 1�h�b�g��\������s�N�Z����(=modulesize)
int rsize; // �}�[�W�����܂߂����ۂ̃C���[�W�̈��
int ssize; // �V���{���T�C�Y(�}�[�W�����܂߂Ȃ��A�h�b�g�̌�)
char *filename; // �ۑ�����t�@�C����

public:
virtual int draw(char *filename, int modulesize, int symbolsize,
unsigned char data[MAX_MODULESIZE][MAX_MODULESIZE], void *opt) = 0;
void close(){
int i;
if(this->bit_image){
for(i=0; i<this->rsize; i++) free(this->bit_image[i]);
free(this->bit_image);
}
this->bit_image=NULL;
}
};

#endif
39 changes: 6 additions & 33 deletions ext/rqr/qr_draw_jpeg.cpp
Original file line number Diff line number Diff line change
@@ -1,32 +1,5 @@
#include "qr_draw_jpeg.h"

//=================================================================================
// QRDrawJPEG::QRDrawJPEG
//=================================================================================
QRDrawJPEG::QRDrawJPEG()
{
#ifdef USE_JPG
bit_image = NULL;
#endif
}

//=================================================================================
// QRDrawJPEG::~QRDrawJPEG
//=================================================================================
QRDrawJPEG::~QRDrawJPEG()
{
#ifdef USE_JPG
int i;

if(bit_image){
for(i=0; i<this->rsize; i++){
free(bit_image[i]);
}
free(bit_image);
}
#endif
}

//=============================================================================
// QRDrawJPEG::draw
//=============================================================================
Expand All @@ -36,10 +9,10 @@ int QRDrawJPEG::draw(char *filename, int modulesize, int symbolsize,
#ifdef USE_JPG
setup(filename, modulesize, symbolsize);

/* グレースケールイメージの構築 */
/* �O���[�X�P�[���C���[�W�̍\�z */
if( this->raster(data) ) return(1);

/* JPEG書き出し */
/* JPEG�����o�� */
if( this->write() ) return(1);

return(0);
Expand All @@ -56,7 +29,7 @@ int QRDrawJPEG::raster(unsigned char data[MAX_MODULESIZE][MAX_MODULESIZE])
#ifdef USE_JPG
int i, j, k;

/* 実際にデータを置く領域を確保 */
/* ���ۂɃf�[�^��u���̈���m�� */
bit_image = (unsigned char **)malloc(sizeof(unsigned char *) * this->rsize);
for(i=0; i<this->rsize; i++){
bit_image[i] = (unsigned char *)malloc(this->rsize);
Expand All @@ -65,12 +38,12 @@ int QRDrawJPEG::raster(unsigned char data[MAX_MODULESIZE][MAX_MODULESIZE])

for(i=0; i<this->ssize; i++){
for(j=0; j<this->ssize; j++){
/* 1行分生成 */
/* 1�s������ */
for(k=0; k<this->msize; k++){
bit_image[(i+MARGIN_SIZE)*this->msize][ (j+MARGIN_SIZE)*this->msize + k ] = data[j][i] ? 0 : 255;
}
}
/* モジュールサイズ分縦方向に増やす */
/* ���W���[���T�C�Y���c�����ɑ��₷ */
for(k=1; k<this->msize; k++){
memcpy(bit_image[(i+MARGIN_SIZE)*this->msize+k], bit_image[(i+MARGIN_SIZE)*this->msize], this->rsize);
}
Expand All @@ -94,7 +67,7 @@ int QRDrawJPEG::write()
FILE *stream;
int i;

/* 出力先設定 */
/* �o�͐�ݒ� */
if(!this->filename){
stream = stdout;
}else{
Expand Down
6 changes: 3 additions & 3 deletions ext/rqr/qr_draw_jpeg.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#endif

//=============================================================================
// QRDrawJPEG クラス
// QRDrawJPEG �N���X
//=============================================================================
class QRDrawJPEG : public QRDraw
{
Expand All @@ -20,8 +20,8 @@ class QRDrawJPEG : public QRDraw
int write();

public:
QRDrawJPEG();
~QRDrawJPEG();
QRDrawJPEG(){}
~QRDrawJPEG(){}
int draw(char *filename, int modulesize, int symbolsize,
unsigned char data[MAX_MODULESIZE][MAX_MODULESIZE], void *opt);
};
Expand Down
Loading