void TestImageColourAccessorBytes(void) { CImageColourRGB cRGB; CImageColourOpacity cAlpha; CImageColourCombo2 cColour; CChannels* pcChannels; CImageAccessor* pcAccessor; CImage cImage; SImageColour sDest; BOOL bResult; char* pvData; cRGB.Init(1.0f, 0.5f, 0.25f); cAlpha.Init(0.333f); cColour.Init(&cRGB, &cAlpha); cImage.Init(10, 10, PT_uchar, IMAGE_DIFFUSE_GREEN, //0x7f IMAGE_NORMAL_Y, IMAGE_DIFFUSE_BLUE, //0x3f IMAGE_OPACITY, //0x54 IMAGE_DIFFUSE_RED, //0xff IMAGE_MASK, CHANNEL_ZERO); cImage.Clear(); pcAccessor = CImageAccessorCreator::Create(&cImage, PT_uchar, IMAGE_OPACITY, IMAGE_DIFFUSE_RED, IMAGE_DIFFUSE_GREEN, IMAGE_DIFFUSE_BLUE, CHANNEL_ZERO); sDest.Full(); bResult = pcAccessor->MakeColour(&sDest, &cColour); AssertBool(TRUE, bResult); //Remember ints have reverse endiannes which is why the test number below looks backwarsd. AssertIntHex(0x3f7fff54, *(int*)((void*)sDest.c)); pcAccessor->Set(1, 0, &sDest); pcAccessor->Kill(); pcChannels = &cImage.mcChannels; pvData = pcChannels->GetData(); //First pixel. Didn't touch it. AssertChar(0x00, pvData[0x0]); AssertChar(0x00, pvData[0x1]); AssertChar(0x00, pvData[0x2]); AssertChar(0x00, pvData[0x3]); AssertChar(0x00, pvData[0x4]); AssertChar(0x00, pvData[0x5]); //Second pixel. AssertChar(0x7f, pvData[0x6]); AssertChar(0x00, pvData[0x7]); AssertChar(0x3f, pvData[0x8]); AssertChar(0x54, pvData[0x9]); AssertChar((char)0xff, pvData[0xa]); AssertChar(0x00, pvData[0xb]); }
void TestImageSwizzle(void) { BeginTests(); CImage cImage; CImageModifierStack cStack; CImageRGBToGrey* pcRGBToGrey; CImageChannelRename* pcChannelRename; CImageChannelAdd* pcChannelAdd; CImageDrawBox* pcDrawBox; CImageColourRGB cRGB; ReadImage(&cImage, "Input\\swizzel.png"); cStack.Init(&cImage); pcRGBToGrey = cStack.AddModifier<CImageRGBToGrey>(); pcRGBToGrey->Init(RGBTGS_OnlyIfChannelsSame); pcChannelRename = cStack.AddModifier<CImageChannelRename>(); pcChannelRename->Init(IMAGE_DIFFUSE_GREY, IMAGE_OPACITY); pcChannelAdd = cStack.AddModifier<CImageChannelAdd>(); pcChannelAdd->Init(IMAGE_DIFFUSE_RED, PT_uchar); pcChannelAdd->AddChannel(IMAGE_DIFFUSE_GREEN); pcChannelAdd->AddChannel(IMAGE_DIFFUSE_BLUE); pcDrawBox = cStack.AddModifier<CImageDrawBox>(); cRGB.Init(1.0f, 1.0f, 1.0f); pcDrawBox->Init(NULL, &cRGB); cStack.ApplyAll(); cStack.Kill(); WriteImage(&cImage, "Output\\swizzle.raw"); AssertFileMemory("input\\swizzle.raw", cImage.GetData(), cImage.GetByteSize()); cImage.Kill(); TestStatistics(); }