// ---------------------------------------------------------------------------
// Set display mode of decoration buffer.
// ---------------------------------------------------------------------------
//
void CPeninputPenTraceDecorator::SetDisplayModeL( TDisplayMode aDisplayMode, TBool aUpdateBuffer )
{
    if ( iDisplayMode == aDisplayMode )
    {
        return;
    }

    iDisplayMode = aDisplayMode;
    if ( aUpdateBuffer )
    {
        ResizeL( iBufferSize, ETrue );
    }
}
// ---------------------------------------------------------------------------
// Enable decorator.
// ---------------------------------------------------------------------------
//
void CPeninputPenTraceDecorator::Enable()
{
    if ( !iEnabled && ( !iBitsBitmap || !iMaskBitmap || !iXSquareArray ) )
    {
        TRAPD( err, ResizeL( iBufferSize, ETrue ) );
        if ( err )
        {
            iEnabled = EFalse;
            return;
        }
    }
    iEnabled = ETrue;
}
Esempio n. 3
0
DataStream_TypedSequence<T> &DataStream_TypedSequence<T>::operator =(T &source)
{
	OP_STATUS op_err;

	TRAP_AND_RETURN_VALUE_IF_ERROR(op_err, ResizeL(1), *this);

	DataStream_ByteArray source_binary;

	TRAP_AND_RETURN_VALUE_IF_ERROR(op_err, source.WriteRecordL(&source_binary), *this);
	Item(0).ResetRecord();
	TRAP_AND_RETURN_VALUE_IF_ERROR(op_err, Item(0).ReadRecordFromStreamL(&source_binary), *this);
	return *this;
}
Esempio n. 4
0
void LLT_Factorization(
	vector < int > &ig, 
	vector < int > &jg,
	vector < int > &ijg,
	vector < int > &idi,
	vector < double > &ggl, 
	vector < double > &di,
	vector < int > &LLT_ig,
	vector < int > &LLT_jg,
	vector < int > &LLT_ijg,
	vector < int > &LLT_idi,
	vector < double > &LLT_ggl,
	vector < double > &LLT_di, 
	int Nb
	)
{
	ResizeL(LLT_ig, LLT_jg, LLT_ijg, LLT_idi, LLT_ggl, LLT_di, jg, ig, Nb);
	int cur_bloxk = 0;
	double sum[2];
	int size;
	for (int i = 0; i < Nb; i++)
	{
		int ib0 = ig[i];
		int ib1 = ig[i + 1];
		//идем по блокам для разложения
		//ggl
		for (int m = ib0;m < ib1; m++)
		{
			int j = jg[m];
			int jb0 = ig[j];
			int jb1 = ig[j + 1];
			sum[0] = 0;
			sum[1] = 0;
			int i_cur = ib0;
			//суммируем умножения блоков в строке-столбце
			for (int k = jb0; k < jb1; k++)
			{
				while (jg[i_cur] < jg[k])
				{
					i_cur++;
				}
				if (jg[i_cur] == jg[k])
				{
					size = LLT_ijg[j+1] - LLT_ijg[j];
					mult_block(&LLT_ggl[LLT_ijg[k]], sum, &LLT_ggl[LLT_ijg[i_cur]],size);
				}
			}
			//new elem 
			//sub_complex_numbers(&ggl[ijg[m]], sum, sum);
			size = ijg[m + 1] - ijg[m];
			if (size == 1)
			{
				sum[0] = ggl[ijg[m]] - sum[0];
			}
			else
			{
				sum[0] = ggl[ijg[m]] - sum[0];
				sum[1] = ggl[ijg[m]+1] - sum[1];
			}

			div_complex_numbers(sum, &LLT_di[LLT_idi[j]], sum);
			LLT_ggl[LLT_ijg[m]] = sum[0];
			LLT_ggl[LLT_ijg[m]+1] = sum[1];
		}
		//di
		sum[0] = 0;
		sum[1] = 0;
		for (int k = ib0; k < ib1; k++)
		{
			size = LLT_ijg[k + 1] - LLT_ijg[k];
			mult_block(&LLT_ggl[LLT_ijg[k]], sum, &LLT_ggl[LLT_ijg[k]], size);
		}
		double tmp[2];
		size = idi[i + 1] - idi[i];
		if (size == 1)
		{
			sum[0] = di[idi[i]]-sum[0];
		}
		else
		{
			sum[0] = di[idi[i]] - sum[0];
			sum[1] = di[idi[i]+1] - sum[1];
		}
		SqrtComplex(sum, tmp);
		LLT_di[2 * i] = tmp[0];
		LLT_di[2 * i + 1] = tmp[1];
	}
}