コード例 #1
0
static sk_sp<SkMaskFilter> make_mask_filter() {
    sk_sp<SkMaskFilter> maskFilter;
    switch (R(3)) {
        case 0:
            maskFilter = SkBlurMaskFilter::Make(make_blur_style(), make_scalar(),
                                                make_blur_mask_filter_flag());
        case 1: {
            SkEmbossMaskFilter::Light light;
            for (int i = 0; i < 3; ++i) {
                light.fDirection[i] = make_scalar();
            }
            light.fPad = R(65536);
            light.fAmbient = R(256);
            light.fSpecular = R(256);
            maskFilter = SkEmbossMaskFilter::Make(make_scalar(), light);
        }
        case 2:
        default:
            break;
    }
    return maskFilter;
}
コード例 #2
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_min(value left, value right)
/* apply min functionnot yet supported for vectors and matrices */
{
    value	result;
    int	n;

    make_scalar(&result, right.elements[0]);
    for (n = 0; n < right.width * right.depth; n++)
        if (result.elements[0] > right.elements[n])
            result.elements[0] = right.elements[n];

    return(result);
}
コード例 #3
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_max(value left, value right)
/* apply max function */
{
    value	result;
    int	n;

    make_scalar(&result, right.elements[0]);
    for (n = 0; n < right.width * right.depth; n++)
        if (result.elements[0] < right.elements[n])
            result.elements[0] = right.elements[n];

    return(result);
}
コード例 #4
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_sqrt(value right)
/* apply square root */
{
    value	result;

    if (right.rank != 0)
        die("SQRT is only defined for scalar arguments\n");
    else
    {
        make_scalar(&result, 0);
        result.elements[0] = sqrt(right.elements[0]);
        return(result);
    }
}
コード例 #5
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_log(value right)
/* apply log10 function */
{
    value	result;

    if (right.rank != 0)
        die("LOG is only defined for scalar arguments\n");
    else
    {
        make_scalar(&result, 0);
        result.elements[0] = log10(right.elements[0]);
        return(result);
    }
}
コード例 #6
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_floor(value right)
/* apply floor function */
{
    value	result;

    if (right.rank != 0)
        die("FLOOR is only defined for scalar arguments\n");
    else
    {
        make_scalar(&result, 0);
        result.elements[0] = floor(right.elements[0]);
        return(result);
    }
}
コード例 #7
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_exp(value right)
/* apply exponent function */
{
    value	result;

    if (right.rank != 0)
        die("EXP is only defined for scalar arguments\n");
    else
    {
        make_scalar(&result, 0);
        result.elements[0] = exp(right.elements[0]);
        return(result);
    }
}
コード例 #8
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_cos(value right)
/* apply cosine */
{
    value	result;

    if (right.rank != 0)
        die("COS is only defined for scalar arguments\n");
    else
    {
        make_scalar(&result, 0);
        result.elements[0] = cos(right.elements[0]);
        return(result);
    }
}
コード例 #9
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_atan(value right)
/* apply arctangent */
{
    value	result;

    if (right.rank != 0)
        die("ATAN is only defined for scalar arguments\n");
    else
    {
        make_scalar(&result, 0);
        result.elements[0] = atan(right.elements[0]);
        return(result);
    }
}
コード例 #10
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_power(value left, value right)
/* apply power operation with two CUPL values */
{
    if (left.rank == 0 && right.rank == 0)
    {
        value	result;

        make_scalar(&result, 0);
        result.elements[0] = pow(left.elements[0], right.elements[0]);
        return(result);
    }
    else
        die("power operation on non-scalars is not yet supported\n");
}
コード例 #11
0
ファイル: fast_yaml.c プロジェクト: jabber-at/p1_yaml
static ERL_NIF_TERM process_events(ErlNifEnv* env, events_t **events,
				   yaml_parser_t *parser, int flags)
{
    ERL_NIF_TERM els, el;
    yaml_event_t *event;
    els = enif_make_list(env, 0);

    if (events) {
	while (*events) {
	    event = hd(events);
	    if (event) {
		switch (event->type) {
		case YAML_SEQUENCE_END_EVENT:
		    el = process_events(env, events, parser, flags);
		    els = enif_make_list_cell(env, el, els);
		    break;
		case YAML_MAPPING_END_EVENT:
		    el = process_events(env, events, parser, flags);
		    els = enif_make_list_cell(env, el, els);
		    break;
		case YAML_MAPPING_START_EVENT:
		    yaml_event_delete(event);
		    enif_free(event);
		    return zip(env, els);
		case YAML_SEQUENCE_START_EVENT:
		    yaml_event_delete(event);
		    enif_free(event);
		    return els;
		case YAML_SCALAR_EVENT:
		    el = make_scalar(env, event, flags);
		    els = enif_make_list_cell(env, el, els);
		    break;
		case YAML_ALIAS_EVENT:
		    el = make_alias(env, event);
		    els = enif_make_list_cell(env, el, els);
		    break;
		default:
		    break;
		}
		yaml_event_delete(event);
		enif_free(event);
	    } else {
		break;
	    }
	}
    }

    return els;
}
コード例 #12
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_rand(value right)
/* get a random number from a seed */
{
    value	result;

    if (right.rank != 0)
        die("RAND is only defined for scalar arguments\n");
    else
    {
        make_scalar(&result, 0);
        srand(right.elements[0]);
        result.elements[0] = rand();
        return(result);
    }
}
コード例 #13
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_dot(value left, value right)
/* compute inner or dot product of two vectors */
{
    if (!CONGRUENT(left, right) || right.rank != 1)
        die("DOT failed, operands of different sizes or ranks\n");
    else
    {
        value	result;
        int	n;

        make_scalar(&result, 0);
        for (n = 0; n < left.width * left.depth; n++)
            result.elements[0] += left.elements[n] * right.elements[n];
        return(result);
    }
}
コード例 #14
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_trc(value right)
/* compute sum of elements on main diagonals */
{
    if (right.rank != 2 || right.width != right.depth)
        die("TRACE failed, operands is not a square matrix\n");
    else
    {
        value	result;
        int	n;

        make_scalar(&result, 0);
        for (n = 0; n < right.width; n++)
            result.elements[0] += SUB(right, n, n)[0];
        return(result);
    }
}
コード例 #15
0
static sk_sp<SkPathEffect> make_path_effect(bool canBeNull = true) {
    sk_sp<SkPathEffect> pathEffect;
    if (canBeNull && (R(3) == 1)) { return pathEffect; }

    switch (R(8)) {
        case 0:
            pathEffect = SkPath2DPathEffect::Make(make_matrix(), make_path());
            break;
        case 1:
            pathEffect = SkPathEffect::MakeCompose(make_path_effect(false),
                                                   make_path_effect(false));
            break;
        case 2:
            pathEffect = SkCornerPathEffect::Make(make_scalar());
            break;
        case 3: {
            int count = R(10);
            SkScalar intervals[10];
            for (int i = 0; i < count; ++i) {
                intervals[i] = make_scalar();
            }
            pathEffect = SkDashPathEffect::Make(intervals, count, make_scalar());
            break;
        }
        case 4:
            pathEffect = SkDiscretePathEffect::Make(make_scalar(), make_scalar());
            break;
        case 5:
            pathEffect = SkPath1DPathEffect::Make(make_path(), make_scalar(), make_scalar(),
                                                  make_path_1d_path_effect_style());
            break;
        case 6:
            pathEffect = SkLine2DPathEffect::Make(make_scalar(), make_matrix());
            break;
        case 7:
        default:
            pathEffect = SkPathEffect::MakeSum(make_path_effect(false),
                                               make_path_effect(false));
            break;
    }
    return pathEffect;
}
コード例 #16
0
ファイル: monitor.c プロジェクト: dbremner/cupl
value cupl_posmin(value right)
/* row position of minimum element of argument */
{
    if (right.rank == 0)
        die("POSMIN argument is a scalar");
    else
    {
        value	result;
        int	n;
        scalar	minel = right.elements[0];;

        make_scalar(&result, 0);
        for (n = 0; n < right.width * right.depth; n++)
            if (minel > right.elements[n])
            {
                result.elements[0] = SUBI(right, n);
                minel = right.elements[n];
            }

        return(result);
    }
}
コード例 #17
0
static SkColorFilter* make_color_filter() {
    SkColorFilter* colorFilter;
    switch (R(6)) {
        case 0: {
            SkScalar array[20];
            for (int i = 0; i < 20; ++i) {
                array[i] = make_scalar();
            }
            colorFilter = SkColorMatrixFilter::Create(array);
            break;
        }
        case 1:
            colorFilter = SkLumaColorFilter::Create();
            break;
        case 2: {
            uint8_t tableA[256];
            uint8_t tableR[256];
            uint8_t tableG[256];
            uint8_t tableB[256];
            rand_color_table(tableA);
            rand_color_table(tableR);
            rand_color_table(tableG);
            rand_color_table(tableB);
            colorFilter = SkTableColorFilter::CreateARGB(tableA, tableR, tableG, tableB);
            break;
        }
        case 3:
            colorFilter = SkColorFilter::CreateModeFilter(make_color(), make_xfermode());
            break;
        case 4:
            colorFilter = SkColorMatrixFilter::CreateLightingFilter(make_color(), make_color());
            break;
        case 5:
        default:
            colorFilter = nullptr;
            break;
    }
    return colorFilter;
}
コード例 #18
0
static SkImageFilter* make_image_filter(bool canBeNull) {
    SkImageFilter* filter = 0;

    // Add a 1 in 3 chance to get a nullptr input
    if (canBeNull && (R(3) == 1)) { return filter; }

    enum { ALPHA_THRESHOLD, MERGE, COLOR, LUT3D, BLUR, MAGNIFIER,
           DOWN_SAMPLE, XFERMODE, OFFSET, MATRIX, MATRIX_CONVOLUTION, COMPOSE,
           DISTANT_LIGHT, POINT_LIGHT, SPOT_LIGHT, NOISE, DROP_SHADOW,
           MORPHOLOGY, BITMAP, DISPLACE, TILE, PICTURE, PAINT, NUM_FILTERS };

    switch (R(NUM_FILTERS)) {
    case ALPHA_THRESHOLD:
        filter = SkAlphaThresholdFilter::Create(make_region(), make_scalar(), make_scalar());
        break;
    case MERGE:
        filter = SkMergeImageFilter::Create(make_image_filter(), make_image_filter(), make_xfermode());
        break;
    case COLOR:
    {
        SkAutoTUnref<SkColorFilter> cf(make_color_filter());
        filter = cf.get() ? SkColorFilterImageFilter::Create(cf, make_image_filter()) : 0;
    }
        break;
    case LUT3D:
    {
        int cubeDimension;
        SkAutoDataUnref lut3D(make_3Dlut(&cubeDimension, (R(2) == 1), (R(2) == 1), (R(2) == 1)));
        SkAutoTUnref<SkColorFilter> cf(SkColorCubeFilter::Create(lut3D, cubeDimension));
        filter = cf.get() ? SkColorFilterImageFilter::Create(cf, make_image_filter()) : 0;
    }
        break;
    case BLUR:
        filter = SkBlurImageFilter::Create(make_scalar(true), make_scalar(true), make_image_filter());
        break;
    case MAGNIFIER:
        filter = SkMagnifierImageFilter::Create(make_rect(), make_scalar(true));
        break;
    case DOWN_SAMPLE:
        filter = SkDownSampleImageFilter::Create(make_scalar());
        break;
    case XFERMODE:
    {
        SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(make_xfermode()));
        filter = SkXfermodeImageFilter::Create(mode, make_image_filter(), make_image_filter());
    }
        break;
    case OFFSET:
        filter = SkOffsetImageFilter::Create(make_scalar(), make_scalar(), make_image_filter());
        break;
    case MATRIX:
        filter = SkImageFilter::CreateMatrixFilter(make_matrix(),
                                                   (SkFilterQuality)R(4),
                                                   make_image_filter());
        break;
    case MATRIX_CONVOLUTION:
    {
        SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize),
                                                     SkIntToScalar(kBitmapSize)));
        SkISize size = SkISize::Make(R(10)+1, R(10)+1);
        int arraySize = size.width() * size.height();
        SkTArray<SkScalar> kernel(arraySize);
        for (int i = 0; i < arraySize; ++i) {
            kernel.push_back() = make_scalar();
        }
        SkIPoint kernelOffset = SkIPoint::Make(R(SkIntToScalar(size.width())),
                                               R(SkIntToScalar(size.height())));
        filter = SkMatrixConvolutionImageFilter::Create(size,
                                                        kernel.begin(),
                                                        make_scalar(),
                                                        make_scalar(),
                                                        kernelOffset,
                                                        (SkMatrixConvolutionImageFilter::TileMode)R(3),
                                                        R(2) == 1,
                                                        make_image_filter(),
                                                        &cropR);
    }
        break;
    case COMPOSE:
        filter = SkComposeImageFilter::Create(make_image_filter(), make_image_filter());
        break;
    case DISTANT_LIGHT:
        filter = (R(2) == 1) ?
                 SkLightingImageFilter::CreateDistantLitDiffuse(make_point(),
                 make_color(), make_scalar(), make_scalar(), make_image_filter()) :
                 SkLightingImageFilter::CreateDistantLitSpecular(make_point(),
                 make_color(), make_scalar(), make_scalar(), SkIntToScalar(R(10)),
                 make_image_filter());
        break;
    case POINT_LIGHT:
        filter = (R(2) == 1) ?
                 SkLightingImageFilter::CreatePointLitDiffuse(make_point(),
                 make_color(), make_scalar(), make_scalar(), make_image_filter()) :
                 SkLightingImageFilter::CreatePointLitSpecular(make_point(),
                 make_color(), make_scalar(), make_scalar(), SkIntToScalar(R(10)),
                 make_image_filter());
        break;
    case SPOT_LIGHT:
        filter = (R(2) == 1) ?
                 SkLightingImageFilter::CreateSpotLitDiffuse(SkPoint3::Make(0, 0, 0),
                 make_point(), make_scalar(), make_scalar(), make_color(),
                 make_scalar(), make_scalar(), make_image_filter()) :
                 SkLightingImageFilter::CreateSpotLitSpecular(SkPoint3::Make(0, 0, 0),
                 make_point(), make_scalar(), make_scalar(), make_color(),
                 make_scalar(), make_scalar(), SkIntToScalar(R(10)), make_image_filter());
        break;
    case NOISE:
    {
        SkAutoTUnref<SkShader> shader((R(2) == 1) ?
            SkPerlinNoiseShader::CreateFractalNoise(
                make_scalar(true), make_scalar(true), R(10.0f), make_scalar()) :
            SkPerlinNoiseShader::CreateTurbulence(
                make_scalar(true), make_scalar(true), R(10.0f), make_scalar()));
        SkPaint paint;
        paint.setShader(shader);
        SkImageFilter::CropRect cropR(SkRect::MakeWH(SkIntToScalar(kBitmapSize),
                                                     SkIntToScalar(kBitmapSize)));
        filter = SkPaintImageFilter::Create(paint, &cropR);
    }
        break;
    case DROP_SHADOW:
        filter = SkDropShadowImageFilter::Create(make_scalar(), make_scalar(), make_scalar(true),
                    make_scalar(true), make_color(), make_shadow_mode(), make_image_filter(),
                    nullptr);
        break;
    case MORPHOLOGY:
        if (R(2) == 1) {
            filter = SkDilateImageFilter::Create(R(static_cast<float>(kBitmapSize)),
                R(static_cast<float>(kBitmapSize)), make_image_filter());
        } else {
            filter = SkErodeImageFilter::Create(R(static_cast<float>(kBitmapSize)),
                R(static_cast<float>(kBitmapSize)), make_image_filter());
        }
        break;
    case BITMAP:
    {
        SkAutoTUnref<SkImage> image(SkImage::NewFromBitmap(make_bitmap()));
        if (R(2) == 1) {
            filter = SkImageSource::Create(image, make_rect(), make_rect(), kHigh_SkFilterQuality);
        } else {
            filter = SkImageSource::Create(image);
        }
    }
        break;
    case DISPLACE:
        filter = SkDisplacementMapEffect::Create(make_channel_selector_type(),
                                                 make_channel_selector_type(), make_scalar(),
                                                 make_image_filter(false), make_image_filter());
        break;
    case TILE:
        filter = SkTileImageFilter::Create(make_rect(), make_rect(), make_image_filter(false));
        break;
    case PICTURE:
    {
        SkRTreeFactory factory;
        SkPictureRecorder recorder;
        SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(kBitmapSize), 
                                                            SkIntToScalar(kBitmapSize), 
                                                            &factory, 0);
        drawSomething(recordingCanvas);
        SkAutoTUnref<SkPicture> pict(recorder.endRecording());
        filter = SkPictureImageFilter::Create(pict.get(), make_rect());
    }
        break;
    case PAINT:
    {
        SkImageFilter::CropRect cropR(make_rect());
        filter = SkPaintImageFilter::Create(make_paint(), &cropR);
    }
    default:
        break;
    }
    return (filter || canBeNull) ? filter : make_image_filter(canBeNull);
}
コード例 #19
0
static SkPath make_path() {
    SkPath path;
    int numOps = R(30);
    for (int i = 0; i < numOps; ++i) {
        switch (R(6)) {
            case 0:
                path.moveTo(make_scalar(), make_scalar());
                break;
            case 1:
                path.lineTo(make_scalar(), make_scalar());
                break;
            case 2:
                path.quadTo(make_scalar(), make_scalar(), make_scalar(), make_scalar());
                break;
            case 3:
                path.conicTo(make_scalar(), make_scalar(), make_scalar(), make_scalar(), make_scalar());
                break;
            case 4:
                path.cubicTo(make_scalar(), make_scalar(), make_scalar(),
                             make_scalar(), make_scalar(), make_scalar());
                break;
            case 5:
            default:
                path.arcTo(make_scalar(), make_scalar(), make_scalar(), make_scalar(), make_scalar());
                break;

        }
    }
    path.close();
    return path;
}
コード例 #20
0
static SkPoint3 make_point() {
    return SkPoint3::Make(make_scalar(), make_scalar(), make_scalar(true));
}
コード例 #21
0
ファイル: test_scalars.c プロジェクト: admiraltso/scripts
int main()
{
    mscalar ma, mb, mc, md, me;
    struct polynomial A, B, C, D, E, F, G, H;
    make_scalar(ma);
    make_scalar(mb);
    make_scalar(mc);
    make_scalar(md);
    make_scalar(me);
    A.leading = NULL;
    B.leading = NULL;
    C.leading = NULL;
    D.leading = NULL;
    E.leading = NULL;
    F.leading = NULL;
    G.leading = NULL;
    H.leading = NULL;

    printf("The prime is: %d.\n", p);
    printf("The power is: %d.\n", r);
    setup_scalars();
    set_seed(0);

    sc_zero(ma);
    printf("The number 0 is: ");
    printmscalar(ma);
    printf(".\n");
    sc_one(mb);
    printf("The number 1 is: ");
    printmscalar(mb);
    printf(".\n");
    ito_sc(541, mc);
    printf("The number 541 is: ");
    printmscalar(mc);
    printf(".\n");
    sc_inv(mc, md);
    printf("The inverse of 541 is: ");
    printmscalar(md);
    printf(".\n");
    sc_mult(md, mc, me);
    printf("The number 1 is: ");
    printmscalar(me);
    printf(".\n");

    A = make_random(10);
    F = copy_pol(A);
    /*	print_pol(A);
    	printf("\n"); */
    B = make_random(11);
    H = copy_pol(B);
    /*	print_pol(B);
    	printf("\n"); */
    C = pol_mult(A, B);
    /*	print_pol(C);
    	printf("\n"); */
    D = pol_mult(B, A);
    /*	print_pol(D);
    	printf("\n"); */
    times_int(-1, &D);
    E = pol_add(C, D);
    print_pol(E);
    printf("\n");
    times_int(-1, &F);
    G = pol_add(A, F);
    print_pol(G);
    printf("\n");
    times_int(-1, &H);
    G = pol_add(B, H);
    print_pol(G);
    exit(0);
}
コード例 #22
0
/* Optimized for dividing by myf. */
struct polynomial *myf_division(struct polynomial *pp)
{
	struct polynomial save_the_spot, uit;
	struct term test;
	struct polynomial myf_rest;
	struct polynomial *aa;
	struct polynomial *ppp;
	struct term **ptraa;
	struct term **ptrterm;
	int first;
	mscalar c;

	myf_rest.degree = myf.degree;
	myf_rest.leading = myf.leading->next;

	make_scalar(c);
	sc_inv(myf.leading->c, c);

	ppp = NULL;
	make_pol(&ppp);
	aa = NULL;
	make_pol(&aa);
	aa->degree = pp->degree - myf.degree;
	ptraa = &(aa->leading);

	save_the_spot.degree = aa->degree;

	/* Copy pp into ppp. */
	ppp->degree = pp->degree;
	ppp->leading = pp->leading;
	/* Set pp equal to ``zero'' */
	pp->leading = NULL;
	ptrterm = &pp->leading;

	while (ppp->leading) {

		if (deelbaar(myf.leading, ppp->leading)) {

			save_the_spot.leading = ppp->leading;
			first = 1;
			
			do {
		
				/* No sign in front of pppterm->c */
				sc_mult_replace(c, ppp->leading->c);
				/* Change sign mon.c */
				sc_negate(ppp->leading->c);

				*ptraa = ppp->leading;

				ppp->leading->n1 -= myf.leading->n1;
				ppp->leading->n2 -= myf.leading->n2;
				ppp->leading->n3 -= myf.leading->n3;
				ppp->leading->n4 -= myf.leading->n4;

				ppp->leading = ppp->leading->next;
				(*ptraa)->next = NULL;
				if (first) {
					test.n1 = (*ptraa)->n1 +
						myf_rest.leading->n1;
					test.n2 = (*ptraa)->n2 +
						myf_rest.leading->n2;
					test.n3 = (*ptraa)->n3 +
						myf_rest.leading->n3;
					test.n4 = (*ptraa)->n4 +
						myf_rest.leading->n4;
					first = 0;
				}

				ptraa = &((*ptraa)->next);

			} while ((ppp->leading) &&
				deelbaar(myf.leading, ppp->leading) &&
				(GROTER == kleiner(ppp->leading, &test)));

			uit = pol_mult(save_the_spot, myf_rest);
			merge_add(ppp, uit);

		} else {
			*ptrterm = ppp->leading;
			ptrterm = &((*ptrterm)->next);
			/* Move on to the next one. */
			ppp->leading = ppp->leading->next;
			/* Terminate pp. */
			*ptrterm = NULL;
		}
	}
	free(ppp);
	free_scalar(c);
	return(aa);
}
コード例 #23
0
 static PyObject* fun(const bool& x) {
     return make_scalar(x);
 }
コード例 #24
0
 static PyObject* fun(const long& x) {
     return make_scalar(x);
 }
コード例 #25
0
 static PyObject* fun(const float& x) {
     return make_scalar(x);
 }
コード例 #26
0
 static PyObject* fun(const double& x) {
     return make_scalar(x);
 }