/* * 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) // // //