diff -ur xkanon-gtk/file.cc xkanon-gtk.wzero3/file.cc --- xkanon-gtk/file.cc 2008-01-06 15:20:00.000000000 +0900 +++ xkanon-gtk.wzero3/file.cc 2010-07-30 01:21:53.000000000 +0900 @@ -1719,13 +1719,17 @@ lsrc += 2; } static void Copy1Pixel(const char*& lsrc, char*& ldest) { +#ifdef __NetBSD__ + memcpy(ldest, lsrc, 3); +#else #ifdef WORDS_BIGENDIAN ldest[0] = lsrc[0]; ldest[1] = lsrc[1]; ldest[2] = lsrc[2]; -#else /* LITTLE ENDIAN / intel architecture */ +#else *(int*)ldest = *(int*)lsrc; ldest[3]=0; #endif +#endif lsrc += 3; ldest += 4; } static int ProcessBlockSize(void) { @@ -1862,6 +1866,9 @@ lsrc += 2; } static void Copy1Pixel(const char*& lsrc, char*& ldest) { +#ifdef __NetBSD__ + memcpy(ldest, lsrc, 3); +#else #ifdef WORDS_BIGENDIAN ldest[0] = lsrc[0]; ldest[1] = lsrc[1]; @@ -1869,6 +1876,7 @@ #else /* LITTLE ENDIAN / intel architecture */ *(int*)ldest = *(int*)lsrc; ldest[3]=0; #endif +#endif lsrc += 3; ldest += 4; } static int ProcessBlockSize(void) { diff -ur xkanon-gtk/file.h xkanon-gtk.wzero3/file.h --- xkanon-gtk/file.h 2008-01-06 15:20:00.000000000 +0900 +++ xkanon-gtk.wzero3/file.h 2010-07-30 01:21:53.000000000 +0900 @@ -44,6 +44,32 @@ # endif #endif +#ifdef __NetBSD__ + +#define INT_SIZE sizeof(int) + +inline int read_little_endian_int(const char* buf) { + return le32dec(buf); +} + +inline int read_little_endian_short(const char* buf) { + return le16dec(buf); +} + +inline int write_little_endian_int(char* buf, int number) { + int c = le32dec(buf); + le32enc(buf, number); + return c; +} + +inline int write_little_endian_short(char* buf, int number) { + int c = le16dec(buf); + le16enc(buf, number); + return c; +} + +#else // !__NetBSD__ + #ifdef WORDS_BIGENDIAN #define INT_SIZE 4 @@ -103,6 +129,7 @@ int c = *(short*)buf; *(short*)buf = number; return c; } #endif // WORDS_BIGENDIAN +#endif // __NetBSD__ /********************************************* ** FILESEARCH: diff -ur xkanon-gtk/image_di_Xbpp.cc xkanon-gtk.wzero3/image_di_Xbpp.cc --- xkanon-gtk/image_di_Xbpp.cc 2008-01-06 15:20:00.000000000 +0900 +++ xkanon-gtk.wzero3/image_di_Xbpp.cc 2010-07-30 01:28:11.000000000 +0900 @@ -181,9 +181,9 @@ char* mask_line = mask + i*width; char* d = dest_pt; char* s = src_pt; for (j=0; jEnd(); } - if (drawed_text[text_pos] < 0 && drawed_text[text_pos+1] == 0) { + if ((drawed_text[text_pos] & 0x80) != 0 && drawed_text[text_pos+1] == 0) { text_pos++; if (twinfo) twinfo->End(); return; @@ -641,7 +641,7 @@ } int is_kin = NO_KINSOKU; // 1バイト文字 : 描画しない - if (drawed_text[text_pos] > 0) { + if (drawed_text[text_pos] > 0 && (drawed_text[text_pos] & 0x80) == 0) { // 改行:色も元に戻す if (drawed_text[text_pos] == '\n') { text_x_pos = text_x_first;