/***************************************************************************** * GdipCreateRegionPath [GDIPLUS.@] * * Creates a GpRegion from a GpPath * * PARAMS * path [I] path to base the region on * region [O] pointer to the newly allocated region * * RETURNS * SUCCESS: Ok * FAILURE: InvalidParameter * * NOTES * If a path has no floating point points, its points will be stored as shorts * (INTPATH) * * If a path is empty, it is considered to be an INTPATH */ GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *path, GpRegion **region) { region_element* element; GpStatus stat; TRACE("%p, %p\n", path, region); if (!(path && region)) return InvalidParameter; *region = heap_alloc_zero(sizeof(GpRegion)); if(!*region) return OutOfMemory; stat = init_region(*region, RegionDataPath); if (stat != Ok) { GdipDeleteRegion(*region); return stat; } element = &(*region)->node; stat = GdipClonePath(path, &element->elementdata.path); if (stat != Ok) { GdipDeleteRegion(*region); return stat; } return Ok; }
/***************************************************************************** * GdipCreateRegionRect [GDIPLUS.@] */ GpStatus WINGDIPAPI GdipCreateRegionRect(GDIPCONST GpRectF *rect, GpRegion **region) { GpStatus stat; TRACE("%p, %p\n", rect, region); if (!(rect && region)) return InvalidParameter; *region = heap_alloc_zero(sizeof(GpRegion)); stat = init_region(*region, RegionDataRect); if(stat != Ok) { GdipDeleteRegion(*region); return stat; } (*region)->node.elementdata.rect.X = rect->X; (*region)->node.elementdata.rect.Y = rect->Y; (*region)->node.elementdata.rect.Width = rect->Width; (*region)->node.elementdata.rect.Height = rect->Height; return Ok; }
int yescrypt_init_shared(yescrypt_shared_t * shared, const uint8_t * param, size_t paramlen, uint64_t N, uint32_t r, uint32_t p, yescrypt_init_shared_flags_t flags, uint8_t * buf, size_t buflen) { yescrypt_shared_t half1, half2; uint8_t salt[32]; if (flags & YESCRYPT_SHARED_PREALLOCATED) { if (!shared->aligned || !shared->aligned_size) return -1; } else { init_region(shared); } if (!param && !paramlen && !N && !r && !p && !buf && !buflen) return 0; if (yescrypt_kdf(NULL, shared, param, paramlen, NULL, 0, N, r, p, 0, 0, YESCRYPT_RW | __YESCRYPT_INIT_SHARED_1, salt, sizeof(salt))) goto out; half1 = half2 = *shared; half1.aligned_size /= 2; half2.aligned += half1.aligned_size; half2.aligned_size = half1.aligned_size; N /= 2; if (p > 1 && yescrypt_kdf(&half1, &half2, param, paramlen, salt, sizeof(salt), N, r, p, 0, 0, YESCRYPT_RW | __YESCRYPT_INIT_SHARED_2, salt, sizeof(salt))) goto out; if (yescrypt_kdf(&half2, &half1, param, paramlen, salt, sizeof(salt), N, r, p, 0, 0, YESCRYPT_RW | __YESCRYPT_INIT_SHARED_1, salt, sizeof(salt))) goto out; if (yescrypt_kdf(&half1, &half2, param, paramlen, salt, sizeof(salt), N, r, p, 0, 0, YESCRYPT_RW | __YESCRYPT_INIT_SHARED_1, buf, buflen)) goto out; return 0; out: if (!(flags & YESCRYPT_SHARED_PREALLOCATED)) free_region(shared); return -1; }
/***************************************************************************** * GdipCreateRegion [GDIPLUS.@] */ GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **region) { TRACE("%p\n", region); if(!region) return InvalidParameter; *region = GdipAlloc(sizeof(GpRegion)); if(!*region) return OutOfMemory; return init_region(*region, RegionDataInfiniteRect); }
GpStatus WINGDIPAPI GdipSetInfinite(GpRegion *region) { GpStatus stat; TRACE("%p\n", region); if (!region) return InvalidParameter; delete_element(®ion->node); stat = init_region(region, RegionDataInfiniteRect); return stat; }
static int free_region(yescrypt_region_t * region) { if (region->base) { #ifdef MAP_ANON if (munmap(region->base, region->base_size)) return -1; #else free(region->base); #endif } init_region(region); return 0; }
int free_region(escrypt_region_t * region) { if (region->base) { #if defined(MAP_ANON) && defined(HAVE_MMAP) if (munmap(region->base, region->size)) return -1; /* LCOV_EXCL_LINE */ #else free(region->base); #endif } init_region(region); return 0; }
gboolean workaround_change_workarea_height(int height) { int workarea_height = gdk_screen_height() - dock.height - dock.y + height; if (workarea_height < 0 || workarea_height > gdk_screen_height()) { //don't used this invalid value caused by gdk_screen_height() hasn't update. g_warning("Err: workaround_change_workarea_height: %d = %d - %d -%d + %d\n", workarea_height, gdk_screen_height(), dock.height, dock.y, height); gdk_flush(); g_timeout_add(1000, (GSourceFunc)workaround_change_workarea_height, GINT_TO_POINTER(height)); } else { g_debug("OK: workaround_change_workarea_height: %d = %d - %d - %d + %d\n", workarea_height, gdk_screen_height(), dock.height, dock.y, height); _change_workarea_height(workarea_height); // cannot use workarea_height to initialize the y axis and dock height. init_region(DOCK_GDK_WINDOW(), 0, dock.height - GD.dock_height, dock.width, GD.dock_height); } return FALSE; }
static void consensus(args_t *args) { htsFile *fasta = hts_open(args->ref_fname, "rb"); if ( !fasta ) error("Error reading %s\n", args->ref_fname); kstring_t str = {0,0,0}; while ( hts_getline(fasta, KS_SEP_LINE, &str) > 0 ) { if ( str.s[0]=='>' ) { // new sequence encountered, apply all chached variants while ( args->vcf_rbuf.n ) { if (args->chain) { print_chain(args); destroy_chain(args); } bcf1_t *rec = args->vcf_buf[args->vcf_rbuf.f]; if ( rec->rid!=args->rid || ( args->fa_end_pos && rec->pos > args->fa_end_pos ) ) break; int i = rbuf_shift(&args->vcf_rbuf); apply_variant(args, args->vcf_buf[i]); } flush_fa_buffer(args, 0); init_region(args, str.s+1); continue; } args->fa_length += str.l; args->fa_src_pos += str.l; // determine if uppercase or lowercase is used in this fasta file if ( args->fa_case==-1 ) args->fa_case = toupper(str.s[0])==str.s[0] ? 1 : 0; if ( args->mask && args->rid>=0) mask_region(args, str.s, str.l); kputs(str.s, &args->fa_buf); bcf1_t **rec_ptr = NULL; while ( args->rid>=0 && (rec_ptr = next_vcf_line(args)) ) { bcf1_t *rec = *rec_ptr; // still the same chr and the same region? if not, fasta buf can be flushed if ( rec->rid!=args->rid || ( args->fa_end_pos && rec->pos > args->fa_end_pos ) ) { // save the vcf record until next time and flush unread_vcf_line(args, rec_ptr); rec_ptr = NULL; break; } // is the vcf record well beyond cached fasta buffer? if yes, the buf can be flushed if ( args->fa_ori_pos + args->fa_buf.l - args->fa_mod_off <= rec->pos ) { unread_vcf_line(args, rec_ptr); rec_ptr = NULL; break; } // is the cached fasta buffer full enough? if not, read more fasta, no flushing if ( args->fa_ori_pos + args->fa_buf.l - args->fa_mod_off < rec->pos + rec->rlen ) { unread_vcf_line(args, rec_ptr); break; } apply_variant(args, rec); } if ( !rec_ptr ) flush_fa_buffer(args, 60); } if (args->chain) { print_chain(args); destroy_chain(args); } flush_fa_buffer(args, 0); hts_close(fasta); free(str.s); }
int yescrypt_init_local(yescrypt_local_t * local) { init_region(local); return 0; }
int yescrypt_init_shared(yescrypt_shared_t * shared, const uint8_t * param, size_t paramlen, uint64_t N, uint32_t r, uint32_t p, yescrypt_init_shared_flags_t flags, uint32_t mask, uint8_t * buf, size_t buflen) { yescrypt_shared1_t * shared1 = &shared->shared1; yescrypt_shared_t dummy, half1, half2; uint8_t salt[32]; if (flags & YESCRYPT_SHARED_PREALLOCATED) { if (!shared1->aligned || !shared1->aligned_size) return -1; } else { init_region(shared1); } shared->mask1 = 1; if (!param && !paramlen && !N && !r && !p && !buf && !buflen) return 0; init_region(&dummy.shared1); dummy.mask1 = 1; if (yescrypt_kdf(&dummy, shared1, param, paramlen, NULL, 0, N, r, p, 0, YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_1, salt, sizeof(salt))) goto out; half1 = half2 = *shared; half1.shared1.aligned_size /= 2; half2.shared1.aligned += half1.shared1.aligned_size; half2.shared1.aligned_size = half1.shared1.aligned_size; N /= 2; if (p > 1 && yescrypt_kdf(&half1, &half2.shared1, param, paramlen, salt, sizeof(salt), N, r, p, 0, YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_2, salt, sizeof(salt))) goto out; if (yescrypt_kdf(&half2, &half1.shared1, param, paramlen, salt, sizeof(salt), N, r, p, 0, YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_1, salt, sizeof(salt))) goto out; if (yescrypt_kdf(&half1, &half2.shared1, param, paramlen, salt, sizeof(salt), N, r, p, 0, YESCRYPT_RW | YESCRYPT_PARALLEL_SMIX | __YESCRYPT_INIT_SHARED_1, buf, buflen)) goto out; shared->mask1 = mask; return 0; out: if (!(flags & YESCRYPT_SHARED_PREALLOCATED)) free_region(shared1); return -1; }
/***************************************************************************** * GdipCreateRegionPath [GDIPLUS.@] * * Creates a GpRegion from a GpPath * * PARAMS * path [I] path to base the region on * region [O] pointer to the newly allocated region * * RETURNS * SUCCESS: Ok * FAILURE: InvalidParameter * * NOTES * If a path has no floating point points, its points will be stored as shorts * (INTPATH) * * If a path is empty, it is considered to be an INTPATH */ GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *path, GpRegion **region) { region_element* element; GpPoint *pointsi; GpPointF *pointsf; GpStatus stat; DWORD flags = FLAGS_INTPATH; INT count, i; TRACE("%p, %p\n", path, region); if (!(path && region)) return InvalidParameter; *region = GdipAlloc(sizeof(GpRegion)); if(!*region) return OutOfMemory; stat = init_region(*region, RegionDataPath); if (stat != Ok) { GdipDeleteRegion(*region); return stat; } element = &(*region)->node; count = path->pathdata.Count; /* Test to see if the path is an Integer path */ if (count) { pointsi = GdipAlloc(sizeof(GpPoint) * count); pointsf = GdipAlloc(sizeof(GpPointF) * count); if (!(pointsi && pointsf)) { GdipFree(pointsi); GdipFree(pointsf); GdipDeleteRegion(*region); return OutOfMemory; } stat = GdipGetPathPointsI(path, pointsi, count); if (stat != Ok) { GdipDeleteRegion(*region); return stat; } stat = GdipGetPathPoints(path, pointsf, count); if (stat != Ok) { GdipDeleteRegion(*region); return stat; } for (i = 0; i < count; i++) { if (!(pointsi[i].X == pointsf[i].X && pointsi[i].Y == pointsf[i].Y )) { flags = FLAGS_NOFLAGS; break; } } GdipFree(pointsi); GdipFree(pointsf); } stat = GdipClonePath(path, &element->elementdata.pathdata.path); if (stat != Ok) { GdipDeleteRegion(*region); return stat; } /* 3 for headers, once again size doesn't count itself */ element->elementdata.pathdata.pathheader.size = ((sizeof(DWORD) * 3)); switch(flags) { /* Floats, sent out as floats */ case FLAGS_NOFLAGS: element->elementdata.pathdata.pathheader.size += (sizeof(DWORD) * count * 2); break; /* INTs, sent out as packed shorts */ case FLAGS_INTPATH: element->elementdata.pathdata.pathheader.size += (sizeof(DWORD) * count); break; default: FIXME("Unhandled flags (%08x). Expect wrong results.\n", flags); } element->elementdata.pathdata.pathheader.size += get_pathtypes_size(path); element->elementdata.pathdata.pathheader.magic = VERSION_MAGIC; element->elementdata.pathdata.pathheader.count = count; element->elementdata.pathdata.pathheader.flags = flags; (*region)->header.size = sizeheader_size + get_element_size(element); return Ok; }