/* valの内容をwmfp->imgに埋め込む @val 透かしとして埋め込むバイトの内容 @wmfp 処理対象のWFILEのアドレス */ static void wwrite_byte(const char val, WFILE *wmfp) { int i, bit; png_byte color; wmfp->bs = openBitStream(&val, sizeof(char), "r"); /* valをもとにビットストリームを作成 */ for(i = 0; i < 8; i ++){ /* 8ドット分ループ */ color = getColorFromOft(wmfp); /* 処理すべきバイトを取得する */ bit = readBitStream(wmfp->bs); if(bit == 1){ set_nbit8((unsigned char *)&color, wmfp->offset.plane_no); } else if(bit == 0){ clr_nbit8((unsigned char *)&color, wmfp->offset.plane_no); } #ifdef DEBUG printOffset(&wmfp->offset); #endif setColorFromOft(color, wmfp); /* ここでrow_pointersに格納 */ /* 1ドット分だけオフセットを進める */ wseek_dot(wmfp); } closeBitStream(wmfp->bs); }
static void testBitStream(Common::BitStream &bitStream, const byte (&compValues)[11]) { byte data[11]; readBitStream(bitStream, data); for (size_t i = 0; i < ARRAYSIZE(compValues); i++) EXPECT_EQ(data[i], compValues[i]) << "At index " << i; }