Skip to content

Instantly share code, notes, and snippets.

View ialhashim's full-sized avatar

Ibraheem Alhashim ialhashim

View GitHub Profile
@ialhashim
ialhashim / screencapture.cpp
Last active October 28, 2023 20:41
Portable screen capture using C++ under Windows 10 (or 8)
#include "screengrab.h"
void capture()
{
CComPtr<ID3D11Device> pDevice;
CComPtr<IDXGIOutputDuplication> pDeskDupl;
//(...)create devices and duplication interface etc here..
DXGI_OUTDUPL_DESC OutputDuplDesc;
@ialhashim
ialhashim / download_earth_images.py
Created May 24, 2018 09:22
Download the Earth from World Imagery (Esri)
import subprocess
import pathlib
# Source
map_server = 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/'
# Output directory
outdir = 'images/'
pathlib.Path(outdir).mkdir(parents=True, exist_ok=True)
@ialhashim
ialhashim / woocomerece_wpml.php
Created December 28, 2016 00:11
WooCommerce Multilingual Create Products
// Product in default language
{
global $sitepress;
$sitepress->switch_lang('en');
// Add the product (a post of type 'product')
$post_id = wp_insert_post($post_data);
// Attach media to it
set_post_thumbnail( $post_id, get_post_id_by_title( $code, 'attachment' ) );
@ialhashim
ialhashim / shine.css
Created November 1, 2016 09:31
Shine effect
@keyframes shine{
0% {background-position: top left;}
50% {background-position: top right;}
100% {
background-position: top right;
background: #e91e63;
-webkit-background-clip: text;
}
}
@ialhashim
ialhashim / DivergingColorMaps.hpp
Last active December 31, 2019 06:19
C++ code for a color map based on work by Kenneth Moreland
// Color map based on work by Kenneth Moreland: http://www.sandia.gov/~kmorel/documents/ColorMaps/
#pragma once
#include <QVector> // or use std::vector
inline std::vector< std::vector<double> > makeColorMap()
{
QVector<int> colorArray;
colorArray <<59<<76<<192<<60<<78<<194<<61<<80<<195<<62<<81<<197<<
63<<83<<198<<64<<85<<200<<66<<87<<201<<67<<88<<203<<68<<90<<204<<
69<<92<<206<<70<<93<<207<<71<<95<<209<<73<<97<<210<<74<<99<<211<<
@ialhashim
ialhashim / LABP.hpp
Created August 29, 2015 06:30
Linear Angle Based Parameterization
#pragma once
// Linear angle based parameterization SGP '07 - c++ code
// Based on code by Rhaleb Zayer
#include "SurfaceMeshModel.h"
#include "SurfaceMeshHelper.h"
using namespace SurfaceMesh;
#include <Eigen/Core>
@ialhashim
ialhashim / gist:f99ffdfaa60caeafc070
Created August 27, 2015 20:27
Get JSON format 3D model
Query:
https://3dwarehouse.sketchup.com/search.html?q=chair
Extract subjectIDs
Then:
https://3dwarehouse.sketchup.com/warehouse/getbinary?subjectId=XXXXXXXX&subjectClass=entity&cache=1440704568191&name=skj
struct DisjointStrings{
DisjointStrings(QVector < QPair<QString, QString> > pairings = QVector < QPair<QString, QString> >()){
if (pairings.empty()) return;
QSet<QString> all_nodes;
for (auto p : pairings) { all_nodes << p.first; all_nodes << p.second; }
DisjointSet U(all_nodes.size());
QMap < QString, int > node_idx;
QMap < int, QString > idx_node;
for (auto n : all_nodes) { node_idx[n] = node_idx.size(); idx_node[node_idx[n]] = n; }
// https://github.com/libigl/libigl/blob/master/include/igl/project_to_line.cpp
auto projectionOnSegment = [&](const Vector3 & p, const Vector3 & s, const Vector3 & d){
Real px = p[0], py = p[1], pz = p[2];
Real sx = s[0], sy = s[1], sz = s[2];
Real dx = d[0], dy = d[1], dz = d[2];
Real dms[3], smp[3];
dms[0] = dx-sx; dms[1] = dy-sy; dms[2] = dz-sz;
Real v_sqrlen = dms[0]*dms[0] + dms[1]*dms[1] + dms[2]*dms[2]; assert(v_sqrlen != 0);
smp[0] = sx-px; smp[1] = sy-py; smp[2] = sz-pz;
@ialhashim
ialhashim / voronoi.hpp
Last active November 24, 2022 04:36
Header-only C++ implementation to generate Voronoi diagrams (nice data structure)
// Source: https://github.com/samkusin/gamelabs/tree/master/voronoi
// with a bug fix (ennetws)
/* Usage:
using namespace cinekine;
...
voronoi::Sites sites;
for(int i = 0; i < 5; i++) sites.push_back(voronoi::Vertex(rand()*xBound/RAND_MAX,rand()*yBound/RAND_MAX));
...
voronoi::Graph graph = voronoi::build(std::move(sites), xBound, yBound);
...