void FourDimensionalScene::MakeSlice(const HyperPlane &hp)
{
	ClearSlice();
	std::vector<FourDimensionalObject *>::const_iterator it = mObjects.cbegin();
	for (; it != mObjects.cend(); ++it)
		mSlice.push_back((*it)->Slice(hp).release());
}
//--- Private initializer for everything
void c_Histogram::InitHist(const int f, const int s, const int c, const int sm)
{
    if(!isInitialized)
    {
        histogram = new c_HistSlice[f]();
        rawSlice = new RGBA_uint32_t[256];
        curFrame = 0;
        totFrames = f;
        frameSize = s;
        channels = c;
        scaleMode = sm;
        ClearSlice();

        isInitialized = true;
    }
}
void c_Histogram::ProcessFrame(const unsigned char* frameData)
{
    for(int px = 0; px < (frameSize * channels); px += 3)
    {
        //histogram[curFrame].Inc('r', frameData[px + 0], rawSlice);
        //histogram[curFrame].Inc('g', frameData[px + 1], rawSlice);
        //histogram[curFrame].Inc('b', frameData[px + 2], rawSlice);
        histogram[curFrame].IncFastInline((unsigned char)frameData[px + 0],
                                    (unsigned char)frameData[px + 1],
                                    (unsigned char)frameData[px + 2],
                                     rawSlice);
    }

    //histogram->PrintMaxValues();
    histogram[curFrame].Normalize(scaleMode, rawSlice);
    ClearSlice();


    curFrame++;
}