blob: 34a3d7ab21c790469ebeb2ac29c673a88a3a1b2e [file] [log] [blame]
/*
* Copyright 2017 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can
* be found in the LICENSE file.
*
*/
#pragma once
//
//
//
#include "types.h"
//
// Add defensive high guard-bit flags to the opaque path and raster
// handles. This is tested once and stripped down to a handle.
//
// union skc_typed_handle
// {
// skc_uint u32;
//
// struct {
// skc_uint handle : 30;
// skc_uint is_path : 1;
// skc_uint is_raster : 1;
// };
// struct {
// skc_uint na : 30;
// skc_uint type : 2;
// };
// }
//
typedef enum skc_typed_handle_type_e
{
SKC_TYPED_HANDLE_TYPE_IS_PATH = 0x40000000,
SKC_TYPED_HANDLE_TYPE_IS_RASTER = 0x80000000
} skc_typed_handle_type_e;
typedef skc_uint skc_typed_handle_t;
typedef skc_uint skc_handle_t;
//
//
//
#define SKC_TYPED_HANDLE_MASK_TYPE (SKC_TYPED_HANDLE_TYPE_IS_PATH | SKC_TYPED_HANDLE_TYPE_IS_RASTER)
#define SKC_TYPED_HANDLE_TO_HANDLE(h) ((h) & ~SKC_TYPED_HANDLE_MASK_TYPE)
#define SKC_TYPED_HANDLE_IS_TYPE(h,t) ((h) & (t))
#define SKC_TYPED_HANDLE_IS_PATH(h) ((h) & SKC_TYPED_HANDLE_TYPE_IS_PATH)
#define SKC_TYPED_HANDLE_IS_RASTER(h) ((h) & SKC_TYPED_HANDLE_TYPE_IS_RASTER)
//
//
//