Reclaimed Cobblestone: The Most Ancient Paving Method (2024)

Cobblestones have been used for paving since ancient times. Roman-era cobbled streets date back to the 3rd and 4th centuries, and earlier examples have been found in what was ancient Greece and Mesopotamia. Originally smooth rounded stones gathered from river beds or glacial deposits were used as cobblestones. As safer, smoother streets were desired, quarried stones with much flatter surface profiles and more regular shapes were substituted. Now, this reclaimed stone—reclaimed cobblestone—is sought after, to be used mainly as pavers.

Reclaimed Cobblestone: The Most Ancient Paving Method (1)
Reclaimed Cobblestone: The Most Ancient Paving Method (2)
Reclaimed Cobblestone: The Most Ancient Paving Method (3)

Local stone is generally preferred for paving applications so we see cobblestones made of granite, porphyry, basalt, sandstone, and limestone depending on regional availability. The most durable of these stone types are igneous—the basalts, granites, and porphyry, but hard limestones and sandstones are also common.

Properly maintained cobblestone roadways can last centuries. When these old roads are upgraded to modern construction standards, their cobblestones can be reclaimed for use in modern applications. These weathered and worn cobbles have great aesthetic characteristics highlighted by worn surfaces, weathered patinas, and unique colors and shapes. Some also come with great pedigrees, having been harvested from well-known ancient roadways.

Reclaimed cobblestones are now used extensively as paving stone for driveways, driveway aprons, walkways, decorative borders, edging, and accent stones. Where environmental factors are a consideration permeable installations can also be achieved using reclaimed cobblestones compounding the benefits of this sustainable product. Cobblestones are also strong enough to be used as building stone or veneer although these are less common applications.

Finding the right natural stone for your project has never been this easy.

START YOUR STONE SEARCH

GRANITE COBBLESTONES

Granite is used as a paving stone almost everywhere. Cobblestones are the most common form in Europe and North America. Although mostly gray, granite cobblestone colors vary widely by region as does the grain of each of the stones. The grain of reclaimed cobblestones are often less visible through weathered patinas but the colors are hard to disguise. Unlike modern or newly quarried cobblestones, colors vary in every lot of reclaimed cobbles and the effect of this variation is beautiful when artfully installed.

In New England, most of our cobblestones are granite in shades of gray. But in the Chicago area you can find purples to grays, and in stone from Europe, for example, our Swedish granite cobblestones, display reds, yellows, and peach tones. The Swedish cobbles are also available with the tops sawn flat, making them perfect for modern style installations.

Domestic granite cobblestones also come in many different sizes and shapes. We sort the sizes by super jumbo, jumbo, road pavers, and medium. The shapes vary slightly by region with the oldest New England cobbles the least consistent.

Reclaimed Cobblestone: The Most Ancient Paving Method (4)
Reclaimed Cobblestone: The Most Ancient Paving Method (5)
Reclaimed Cobblestone: The Most Ancient Paving Method (6)

PORPHYRY COBBLESTONES

Porphyry is another very popular paving stone. In Europe, it’s used as cobblestone and is prized for its durability and color variations. Porphyry cobblestones often have square surfaces. Very small cobblestone cubes are also common and used in creative patterns. The fan pattern, for example, is very popular and widely seen. Porphyry colors vary, as shown below.

Reclaimed Cobblestone: The Most Ancient Paving Method (7)

Reclaimed Cobblestone: The Most Ancient Paving Method (8)

BASALT COBBLESTONES

Basalt is another igneous stone (like granite and porphyry) used for paving. It’s generally gray to black in color, although there are some gray-green examples. Some basalt also contains voids, or holes, that formed during the lava’s cooling process. The basalts used for cobblestones are generally those without voids, although there are exceptions.

Black basalt cobbles are used extensively as the local cobblestone in the Azores, where they are combined with white limestone cobbles to create unique designs and borders. Basalt makes beautiful cobblestones that are very durable and desirable where dark stone is specified.

Reclaimed Cobblestone: The Most Ancient Paving Method (9)

Limestone Cobblestones

Reclaimed Cobblestone: The Most Ancient Paving Method (10)

Limestone, a sedimentary stone, is available all over the world and is often used as a paving stone. A common European cobblestone is Belgian bluestone which is actually a limestone. Reclaimed Belgian bluestone cobblestones are plentiful in Europe, where they are reclaimed from modern roadway reconstruction.

Belgian bluestone is a very hard limestone and is freeze/thaw resistant. This freeze/thaw resistance is very important when limestone exterior cobblestones are specified. Softer limestones can absorb moisture which fractures the surface when frozen but these can be used in exterior applications in warmer climates or indoors. Limestone comes in a wide range of colors and often contains small fossils of the shells that formed it when they were added to the sediment.

SANDSTONE Cobblestones

Sandstone cobblestones are prized for their rich earth tone colors. One example is our reclaimed European sandstone cobblestones, which are shades of beige, okra, and plum. The striking mix of colors in sandstone cobblestones makes for unique installations used either alone or as accents with other stone. Sandstone is also naturally skid-resistant.

Reclaimed Cobblestone: The Most Ancient Paving Method (11)

Reclaimed Cobblestone: The Most Ancient Paving Method (12)

Creative Cobblestone Applications

Reclaimed Cobblestone: The Most Ancient Paving Method (13)

Reclaimed Cobblestone: The Most Ancient Paving Method (14)

Reclaimed Cobblestone: The Most Ancient Paving Method (15)

Reclaimed Cobblestone: The Most Ancient Paving Method (16)

Product Highlights

MATERIAL HIGHLIGHTS

Try Our Cobblestone Visualizer

LEARN MORE ABOUT RECLAIMED STONE

talk to an expert

'; } }, { "sTitle": "SDT###", "mData": "sdm_id", "sWidth": "15%", "bSortable": true, }, { "sTitle": "Date/time", "mData": "filetime", "sWidth": "25%", "bSortable": true, }, { "sTitle": "", "mData": null, "sWidth": "10%", "bSortable": false, "mRender": function(data, type, full) { return '

'; } } ], 'autoWidth': false, "bDestroy": true } ) } }); $("#tblJsonFiles").on('click', 'tbody .delete-json-file', function(e) { document.getElementById('originFileName').value = $(this).attr('id'); document.getElementById('rowIndex').value = $(this).closest('tr').index(); elementorProFrontend.modules.popup.showPopup({id: parseInt(58808)}); /* Close this popup */ elementorProFrontend.modules.popup.closePopup({}, e); }); $("#tblJsonFiles").on('click', 'tbody .json-file', function(e) { const fileName = e.target.innerHTML; console.log("click SDT json file aaaa", e.target.innerHTML, $(this).attr('id'), e.target); const pathJsonFile = $(this).attr('id'); console.log("pathJsonFile", pathJsonFile); $.get(pathJsonFile).success(function(data){ let ugly = JSON.stringify(data[0].data); let obj = JSON.parse(ugly); let pretty = JSON.stringify(obj, undefined, 4); document.getElementById('paramData').value = pretty; document.getElementById('originFileName').value = e.target.innerHTML; let artx = document.getElementById("artx").contentWindow; artx.postMessage({type:"loadParams", data: JSON.parse(pretty)},"*"); artx.postMessage("getTextureData","*"); $('#download-json').prop('disabled', false); $('#download-texture').prop('disabled', false); $('#download-json-texture').prop('disabled', false); $('#get-json').prop('disabled', false); $('#draw-json').prop('disabled', false); elementorProFrontend.modules.popup.closePopup({}, e); }); }) }); })(jQuery)

Reclaimed Cobblestone: The Most Ancient Paving Method (24)

VISUALIZER PROTOTYPE

Change Building Scene
Change Building Material
Change Design Pattern
Adjust Joint Style

'; scenes += '

'; if (index % 3 === 2) { scenes += '

'; } if ((index % 3 === 0 || index % 3 === 1) && sdSceneResult.length - 1 === index) { scenes += '

'; } } } scenes += "

"; $("#scenes").append(scenes); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show Scene popup elementorProFrontend.modules.popup.showPopup({id: parseInt(59789)}); }) //material $('#change-building-material').on('click', function(event) { console.log("change-building-material"); const sdam_id_value = document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; $.ajax({ type:"GET", url: URL_API_SD_MATERIAL_IMAGES_BY_COLLECTION_ID, contentType: 'application/json', success: function(sdMaterialResult) { // console.log("sdMaterialResult", sdMaterialResult); // Append Material data appendHtmlMaterialData(sdMaterialResult); // Add reorder image dropdown selection const reOrderImageEl = $("#reorder-image"); if (reOrderImageEl.length > 0) { reOrderImageEl.empty().append( `

Sort:

` ); } }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show material popup elementorProFrontend.modules.popup.showPopup({id: parseInt(61125)}); }) //pattern $('#change-building-design-pattern').on('click', function(event) { const sdam_id_value = document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; const pattern_id_value = document.getElementById("pattern_id").value !== "" ? document.getElementById("pattern_id").value : ''; const tile_width_value = document.getElementById("tile_width").value !== "" ? document.getElementById("tile_width").value : ''; const visualizer_type = document.getElementById("sc_visualizer_type").value console.log("change-building-pattern-texture", URL_API_GET_MATERIAL_BY_TEXTURE_MATERIAL_ID + "?materialId=" + sdam_id_value + "&visualizer_type=" + visualizer_type); $.ajax({ type:"GET", url: URL_API_GET_MATERIAL_BY_TEXTURE_MATERIAL_ID + "?materialId=" + sdam_id_value + "&visualizer_type=" + visualizer_type, contentType: 'application/json', success: function(sdMaterialTextureResult) { // console.log("sdMaterialTextureResult", sdMaterialTextureResult); let pattern = '

'; if (sdMaterialTextureResult.length > 0) { console.log("sdMaterialTextureResult.length", sdMaterialTextureResult.length); for (let index = 0; index < sdMaterialTextureResult.length; index++) { const element = sdMaterialTextureResult[index]; let borderTyle = ""; let imageStyle = "position: absolute;height: 35px;right: 27px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 7px;"; if (parseInt(sdam_id_value) === parseInt(element.sdam_id) && parseInt(pattern_id_value) === parseInt(element.patternId) && parseInt(tile_width_value) === parseInt(element.tile_width)) { borderTyle = "outline: solid #000 6px"; imageStyle = "position: absolute;height: 35px;right: 22px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 4px;"; } if (index % 3 === 0) { pattern += '

'; } pattern += '

'; const image_filename = element.image_location_300 || element.image_location_full; pattern += '

'; pattern += '

' +element.sd_design_pattern_id + '

'; pattern += '

'; pattern += '

'; if (index % 3 === 2) { pattern += '

'; } if ((index % 3 === 0 || index % 3 === 1) && sdMaterialTextureResult.length - 1 === index) { pattern += '

'; } } } pattern += "

"; $("#material_pattern_textures").append(pattern); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show material popup elementorProFrontend.modules.popup.showPopup({id: parseInt(61501)}); }) //joint Style $('#change-joint-material').on('click', function(event) { const sdajm_id_value = document.getElementById("jointID").value; $.ajax({ type:"GET", url: URL_API_GET_SD_JOINT_MATERIALS + "?id=" + sdajm_id_value, contentType: 'application/json', success: function(sdJointMaterialsResult) { let jointMaterial = '

'; if (sdJointMaterialsResult.length > 0) { for (let index = 0; index < sdJointMaterialsResult.length; index++) { // console.log("index 11111111111", index, index % 3); const element = sdJointMaterialsResult[index]; const icon_filename = element.icon_filename_300 || element.icon_filename; const borderTyle = parseInt(sdajm_id_value) === parseInt(element.sdajm_id) ? "outline: solid #000 6px" : ""; if (index % 3 === 0) { jointMaterial += '

'; } jointMaterial += '

'; jointMaterial += '

'; jointMaterial += '

' + element.name + '

'; jointMaterial += '

'; if (index % 3 === 2) { jointMaterial += '

'; } if ((index % 3 === 0 || index % 3 === 1) && sdJointMaterialsResult.length - 1 === index) { jointMaterial += '

'; } } } jointMaterial += "

"; $("#joint-materials").append(jointMaterial); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show Joint Materials popup elementorProFrontend.modules.popup.showPopup({id: parseInt(67077)}); }) // Download Image $('#download-texture').on('click', function(event) { if (document.getElementById("isLoaded").value === "true") { const userInfo = getLocalStorage("user_info"); console.log("download-texture clicked", getCookie("email")); if (userInfo) { let artx = document.getElementById("artx").contentWindow; artx.postMessage("getTextureData","*"); artx.postMessage({ type: "getTexture", data: { size: 2000, quality: 0.6, format: "jpg" } },"*"); } else { // login autoDownloadConfirmation(true); elementorProFrontend.modules.popup.showPopup({id: parseInt(22870)}); } } }) // share-texture $('#share-texture').on('click', function(event) { if (document.getElementById("isLoaded").value === "true") { const userInfo = getLocalStorage("user_info"); console.log("share-texture clicked", getCookie("email")); if (userInfo) { // share elementorProFrontend.modules.popup.showPopup({id: parseInt(67228)}); } else { // login autoDownloadConfirmation(true, true, 2); elementorProFrontend.modules.popup.showPopup({id: parseInt(22870)}); } } }) // Sorting function $(document).on('change', '#sortingDropdown', function(e) { // Warm: image_warm | Cool: image_cool | Dark/Light: gs_average if (sdMaterialResultObj && sdMaterialResultObj.length > 0) { const selectedSorting = $(this).val() ? +$(this).val() : 0; let sortingObj = sdMaterialResultObj.sort((a, b) => { switch (selectedSorting) { // Default: Light -> Dark => gs_average value ASCENDING | 1 case 1: return b.gs_average - a.gs_average; // Dark -> Light => gs_average value DESCENDING | 2 case 2: return a.gs_average - b.gs_average; // Warm -> Cool => Warm value DESCENDING | 3 case 3: return b.image_warm - a.image_warm; // Cool -> Warm => Cool value DESCENDING | 4 case 4: return b.image_cool - a.image_cool; default: return 0; } }); appendHtmlMaterialData(sortingObj); } }) function appendHtmlMaterialData(sdMaterialResult) { let materials = '

'; if (sdMaterialResult && sdMaterialResult.length > 0) { sdMaterialResultObj = sdMaterialResult; // Add global object for Material Result data const sdam_id_value = document.getElementById("sdam_id") && document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; // console.log("sdMaterialResult.length", sdMaterialResult.length); for (let index = 0; index < sdMaterialResult.length; index++) { const element = sdMaterialResult[index]; let borderTyle = ""; let imageStyle = "position: absolute;height: 35px;right: 28px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px;bottom: 7px;"; if (parseInt(sdam_id_value) === parseInt(element.sdam_id)) { borderTyle = "outline: solid #000 6px"; imageStyle = "position: absolute;height: 35px;right: 22px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px;bottom: 4px;"; } if (index % 3 === 0) { materials += '

'; } materials += '

'; const image_filename = element.image_location_300 || element.image_location_full; materials += '

'; materials += '

' +element.sd_pm_type + element.sd_pm_number + '

'; materials += '

'; materials += '

' + element.sd_public_texture_name + '

'; materials += '

'; if (index % 3 === 2) { materials += '

'; } if ((index % 3 === 0 || index % 3 === 1) && sdMaterialResult.length - 1 === index) { materials += '

'; } } } materials += "

"; const materialsEL = $("#materials"); if (materialsEL && materialsEL.length > 0) { materialsEL.empty().append(materials); } } }); function getLocalStorage(cname) { return JSON.parse(localStorage.getItem(cname)); } function getCookie(name) { let nameEQ = name + "="; let ca = document.cookie.split(';'); for(let i=0;i < ca.length;i++) { let c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } })(jQuery)

Reclaimed Cobblestone: The Most Ancient Paving Method (28)

VISUALIZER PROTOTYPE

Change Building Scene
Change Building Material
Change Design Pattern
Adjust Joint Style

` ); } }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show material popup elementorProFrontend.modules.popup.showPopup({id: parseInt(61125)}); }) //pattern $('#change-building-design-pattern').on('click', function(event) { document.getElementById("popupOpen").value = 3; document.getElementById("displayCols").value = detectColsByDevice(); const sdam_id_value = document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; const visualizer_type = document.getElementById("sc_visualizer_type").value // const pattern_id_value = document.getElementById("pattern_id").value !== "" ? document.getElementById("pattern_id").value : ''; // const tile_width_value = document.getElementById("tile_width").value !== "" ? document.getElementById("tile_width").value : ''; console.log("change-building-pattern-texture", URL_API_GET_MATERIAL_BY_TEXTURE_MATERIAL_ID + "?materialId=" + sdam_id_value + "&visualizer_type=" + visualizer_type); $.ajax({ type:"GET", url: URL_API_GET_MATERIAL_BY_TEXTURE_MATERIAL_ID + "?materialId=" + sdam_id_value + "&visualizer_type=" + visualizer_type, contentType: 'application/json', success: function(sdMaterialTextureResult) { console.log("sdMaterialTextureResult aaaaaaaaaaaaa", sdMaterialTextureResult); sdMaterialTextureResultObj = sdMaterialTextureResult; drawDesignPattern(sdMaterialTextureResult); // console.log("sdMaterialTextureResult", sdMaterialTextureResult); // let pattern = '

'; // if (sdMaterialTextureResult.length > 0) { // // console.log("sdMaterialTextureResult.length", sdMaterialTextureResult.length); // for (let index = 0; index < sdMaterialTextureResult.length; index++) { // const element = sdMaterialTextureResult[index]; // let borderTyle = ""; // let imageStyle = "position: absolute;height: 35px;right: 27px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 7px;"; // if (parseInt(sdam_id_value) === parseInt(element.sdam_id) && parseInt(pattern_id_value) === parseInt(element.patternId) && parseInt(tile_width_value) === parseInt(element.tile_width)) { // borderTyle = "outline: solid #000 6px"; // imageStyle = "position: absolute;height: 35px;right: 22px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 4px;"; // } // if (index % 3 === 0) { // pattern += '

'; // } // pattern += '

'; // const image_filename = element.image_location_300 || element.image_location_full; // pattern += '

'; // pattern += '

' +element.sd_design_pattern_id + '

'; // pattern += '

'; // pattern += '

'; // if (index % 3 === 2) { // pattern += '

'; // } // if ((index % 3 === 0 || index % 3 === 1) && sdMaterialTextureResult.length - 1 === index) { // pattern += '

'; // } // } // } // pattern += "

"; // $("#material_pattern_textures").append(pattern); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show material popup elementorProFrontend.modules.popup.showPopup({id: parseInt(61501)}); }) //joint Style $('#change-joint-material').on('click', function(event) { document.getElementById("popupOpen").value = 4; document.getElementById("displayCols").value = detectColsByDevice(); const sdajm_id_value = document.getElementById("jointID").value; $.ajax({ type:"GET", url: URL_API_GET_SD_JOINT_MATERIALS + "?id=" + sdajm_id_value, contentType: 'application/json', success: function(sdJointMaterialsResult) { sdJointMaterialsResultObj = sdJointMaterialsResult; drawJointMaterials(sdJointMaterialsResult); // let jointMaterial = '

'; // if (sdJointMaterialsResult.length > 0) { // for (let index = 0; index < sdJointMaterialsResult.length; index++) { // // console.log("index 11111111111", index, index % 3); // const element = sdJointMaterialsResult[index]; // const icon_filename = element.icon_filename_300 || element.icon_filename; // const borderTyle = parseInt(sdajm_id_value) === parseInt(element.sdajm_id) ? "outline: solid #000 6px" : ""; // if (index % 3 === 0) { // jointMaterial += '

'; // } // jointMaterial += '

'; // jointMaterial += '

'; // jointMaterial += '

' + element.name + '

'; // jointMaterial += '

'; // if (index % 3 === 2) { // jointMaterial += '

'; // } // if ((index % 3 === 0 || index % 3 === 1) && sdJointMaterialsResult.length - 1 === index) { // jointMaterial += '

'; // } // } // } // jointMaterial += "

"; // $("#joint-materials").append(jointMaterial); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show Joint Materials popup elementorProFrontend.modules.popup.showPopup({id: parseInt(67077)}); }) // Download Image $('#download-texture').on('click', function(event) { if (document.getElementById("isLoaded").value === "true") { const userInfo = getLocalStorage("user_info"); console.log("download-texture clicked", getCookie("email")); if (userInfo) { let artx = document.getElementById("artx").contentWindow; artx.postMessage("getTextureData","*"); artx.postMessage({ type: "getTexture", data: { size: 2000, quality: 0.6, format: "jpg" } },"*"); } else { // login autoDownloadConfirmation(true, true, '1'); elementorProFrontend.modules.popup.showPopup({id: parseInt(22870)}); } } }) // share-texture $('#share-texture').on('click', function(event) { // if (document.getElementById("isLoaded").value === "true") { // const userInfo = getLocalStorage("user_info"); // console.log("share-texture clicked", getCookie("email")); // if (userInfo) { // // share // elementorProFrontend.modules.popup.showPopup({id: parseInt(67228)}); // } else { // // login // autoDownloadConfirmation(true, true, '2'); // elementorProFrontend.modules.popup.showPopup({id: parseInt(22870)}); // } // } console.log("share-texture clicked"); elementorProFrontend.modules.popup.showPopup({id: parseInt(67228)}); }) // Sorting function $(document).on('change', '#sortingDropdown', function(e) { // Warm: image_warm | Cool: image_cool | Dark/Light: gs_average if (sdMaterialResultObj && sdMaterialResultObj.length > 0) { const selectedSorting = $(this).val() ? +$(this).val() : 0; let sortingObj = sdMaterialResultObj.sort((a, b) => { switch (selectedSorting) { // Default: Light -> Dark => gs_average value ASCENDING | 1 case 1: return b.gs_average - a.gs_average; // Dark -> Light => gs_average value DESCENDING | 2 case 2: return a.gs_average - b.gs_average; // Warm -> Cool => Warm value DESCENDING | 3 case 3: return b.image_warm - a.image_warm; // Cool -> Warm => Cool value DESCENDING | 4 case 4: return b.image_cool - a.image_cool; default: return 0; } }); appendHtmlMaterialData(sortingObj); } }) function drawScenes(sdSceneResult) { displayCols = document.getElementById("displayCols") ? document.getElementById("displayCols").value : 3; const scene_id_value = document.getElementById("scene_id") && document.getElementById("scene_id").value !== "" ? document.getElementById("scene_id").value : 8; let scenes = '

'; if (sdSceneResult && sdSceneResult.length > 0) { for (let index = 0; index < sdSceneResult.length; index++) { const element = sdSceneResult[index]; const borderTyle = parseInt(scene_id_value) === parseInt(element.sdas_id) ? "outline: solid #000 6px" : ""; if (index % displayCols === 0) { scenes += '

'; } scenes += '

'; const icon_filename = element.icon_filename_300 || element.icon_filename; scenes += '

'; scenes += '

'; if (index % displayCols === (displayCols-1)) { scenes += '

'; } if ((index % displayCols === 0 || index % displayCols === 1) && sdSceneResult.length - 1 === index) { scenes += '

'; } } } scenes += "

"; // $("#scenes").append(scenes); const scenesEL = $("#scenes"); if (scenesEL && scenesEL.length > 0) { scenesEL.empty().append(scenes); } } function appendHtmlMaterialData(sdMaterialResult) { displayCols = document.getElementById("displayCols") ? document.getElementById("displayCols").value : 3; let materials = '

'; if (sdMaterialResult && sdMaterialResult.length > 0) { sdMaterialResultObj = sdMaterialResult; // Add global object for Material Result data const sdam_id_value = document.getElementById("sdam_id") && document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; // console.log("sdMaterialResult.length", sdMaterialResult.length); for (let index = 0; index < sdMaterialResult.length; index++) { const element = sdMaterialResult[index]; let borderTyle = ""; let imageStyle = "position: absolute;height: 35px;right: 28px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px;bottom: 7px;"; if (parseInt(sdam_id_value) === parseInt(element.sdam_id)) { borderTyle = "outline: solid #000 6px"; imageStyle = "position: absolute;height: 35px;right: 22px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px;bottom: 4px;"; } if (index % displayCols === 0) { materials += '

'; } materials += '

'; const image_filename = element.image_location_300 || element.image_location_full; materials += '

'; materials += '

' +element.sd_pm_type + element.sd_pm_number + '

'; materials += '

'; materials += '

' + element.sd_public_texture_name + '

'; materials += '

'; if (index % displayCols === (displayCols-1)) { materials += '

'; } if ((index % displayCols === 0 || index % displayCols === 1) && sdMaterialResult.length - 1 === index) { materials += '

'; } } } materials += "

"; const materialsEL = $("#materials"); if (materialsEL && materialsEL.length > 0) { materialsEL.empty().append(materials); } } function drawDesignPattern(sdMaterialTextureResult) { displayCols = document.getElementById("displayCols") ? document.getElementById("displayCols").value : 3; const sdam_id_value = document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; const pattern_id_value = document.getElementById("pattern_id").value !== "" ? document.getElementById("pattern_id").value : ''; const tile_width_value = document.getElementById("tile_width").value !== "" ? document.getElementById("tile_width").value : ''; let pattern = '

'; if (sdMaterialTextureResult && sdMaterialTextureResult.length > 0) { console.log("sdMaterialTextureResult.length", sdMaterialTextureResult, sdMaterialTextureResult.length); for (let index = 0; index < sdMaterialTextureResult.length; index++) { const element = sdMaterialTextureResult[index]; let borderTyle = ""; let imageStyle = "position: absolute;height: 35px;right: 27px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 7px;"; if (parseInt(sdam_id_value) === parseInt(element.sdam_id) && parseInt(pattern_id_value) === parseInt(element.patternId) && parseInt(tile_width_value) === parseInt(element.tile_width)) { borderTyle = "outline: solid #000 6px"; imageStyle = "position: absolute;height: 35px;right: 22px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 4px;"; } if (index % displayCols === 0) { pattern += '

'; } pattern += '

'; const image_filename = element.image_location_300 || element.image_location_full; pattern += '

'; pattern += '

' +element.sd_design_pattern_id + '

'; pattern += '

'; pattern += '

'; if (index % displayCols === (displayCols-1)) { pattern += '

'; } if ((index % displayCols === 0 || index % displayCols === 1) && sdMaterialTextureResult.length - 1 === index) { pattern += '

'; } } } pattern += "

"; // $("#material_pattern_textures").append(pattern); const designPatternEL = $("#material_pattern_textures"); if (designPatternEL && designPatternEL.length > 0) { designPatternEL.empty().append(pattern); } } function drawJointMaterials(sdJointMaterialsResult) { displayCols = document.getElementById("displayCols") ? document.getElementById("displayCols").value : 3; const sdajm_id_value = document.getElementById("jointID").value; let jointMaterial = '

'; if (sdJointMaterialsResult && sdJointMaterialsResult.length > 0) { for (let index = 0; index < sdJointMaterialsResult.length; index++) { // console.log("index 11111111111", index, index % 3); const element = sdJointMaterialsResult[index]; const icon_filename = element.icon_filename_300 || element.icon_filename; const borderTyle = parseInt(sdajm_id_value) === parseInt(element.sdajm_id) ? "outline: solid #000 6px" : ""; if (index % displayCols === 0) { jointMaterial += '

'; } jointMaterial += '

'; jointMaterial += '

'; jointMaterial += '

' + element.name + '

'; jointMaterial += '

'; if (index % displayCols === (displayCols-1)) { jointMaterial += '

'; } if ((index % displayCols === 0 || index % displayCols === 1) && sdJointMaterialsResult.length - 1 === index) { jointMaterial += '

'; } } } jointMaterial += "

"; // $("#joint-materials").append(jointMaterial); const jointMaterialEL = $("#joint-materials"); if (jointMaterialEL && jointMaterialEL.length > 0) { jointMaterialEL.empty().append(jointMaterial); } } function detectColsByDevice() { let displayCols = 3; const device = getDevice(); console.log("popup detectColsByDevice=", device, document.getElementById("popupOpen").value); if (device === "tablet") { if (document.getElementById("popupOpen") && document.getElementById("popupOpen").value === '4'){ console.log("popup tablet doc 4"); displayCols = 4; } else { if (Math.abs(window.orientation) === 0) { console.log("popup tablet doc 2"); displayCols = 2; } else { console.log("popup tablet ngang 3"); displayCols = 3; } } } else if (device === "mobile") { if (document.getElementById("popupOpen") && document.getElementById("popupOpen").value === '4'){ console.log("popup mobile doc 2"); displayCols = 2; } else { if (Math.abs(window.orientation) === 0) { console.log("popup mobile doc"); displayCols = 1; } else { console.log("popup mobile ngang"); displayCols = 2; } } } console.log("popup", displayCols); return displayCols; } /* get Device */ function getDevice() { let width = Math.max(window.screen.width, window.innerWidth); let ua = window.navigator.userAgent.toLowerCase(); console.log("getDevice ua", width, ua); // let isTablet = // ua.indexOf("sm-t") > -1 // || ua.indexOf("ipad") > -1 // || (ua.indexOf("macintosh") > -1 && width >= 768 && width <= 1366) // || (ua.indexOf("android") > -1 && "ontouchend" in document); // let isPhone = // ua.indexOf("iphone") > -1 // || ua.indexOf("sm-g") > -1 // || (ua.indexOf("sm-n") > -1 && "ontouchend" in document); let isTablet = ua.indexOf("sm-t") > -1 || ua.indexOf("ipad") > -1 || (ua.indexOf("macintosh") > -1 && width >= 768 && width <= 1366) || (ua.indexOf("android") > -1 && width >= 519 && "ontouchend" in document); let isPhone = ua.indexOf("iphone") > -1 || ua.indexOf("sm-g") > -1 || (ua.indexOf("sm-n") > -1 && "ontouchend" in document) || ua.indexOf("android") > -1 && width < 519; if (isTablet && !isPhone) { // console.log("device is tablet"); return "tablet"; } else if (isPhone){ // console.log("device is mobile"); return "mobile"; } else { // console.log("device is desktop"); return "desktop"; } } function getLocalStorage(cname) { return JSON.parse(localStorage.getItem(cname)); } function getCookie(name) { let nameEQ = name + "="; let ca = document.cookie.split(';'); for(let i=0;i < ca.length;i++) { let c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } }); })(jQuery)

Reclaimed Cobblestone: The Most Ancient Paving Method (35)

VISUALIZER PROTOTYPE

Change Building Scene
Change Building Material
Change Design Pattern

'; scenes += '

'; if (index % 3 === 2) { scenes += '

'; } if ((index % 3 === 0 || index % 3 === 1) && sdSceneResult.length - 1 === index) { scenes += '

'; } } } scenes += "

"; $("#scenes").append(scenes); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show Scene popup elementorProFrontend.modules.popup.showPopup({id: parseInt(59789)}); }) //material $('#change-building-material').on('click', function(event) { console.log("change-building-material"); const sdam_id_value = document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; $.ajax({ type:"GET", url: URL_API_SD_MATERIAL_IMAGES_BY_COLLECTION_ID, contentType: 'application/json', success: function(sdMaterialResult) { // console.log("sdMaterialResult", sdMaterialResult); // Append Material data appendHtmlMaterialData(sdMaterialResult); // Add reorder image dropdown selection const reOrderImageEl = $("#reorder-image"); if (reOrderImageEl.length > 0) { reOrderImageEl.empty().append( `

Sort:

` ); } }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show material popup elementorProFrontend.modules.popup.showPopup({id: parseInt(61125)}); }) //pattern $('#change-building-design-pattern').on('click', function(event) { const sdam_id_value = document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; const pattern_id_value = document.getElementById("pattern_id").value !== "" ? document.getElementById("pattern_id").value : ''; const tile_width_value = document.getElementById("tile_width").value !== "" ? document.getElementById("tile_width").value : ''; const visualizer_type = document.getElementById("sc_visualizer_type").value console.log("change-building-pattern-texture", URL_API_GET_MATERIAL_BY_TEXTURE_MATERIAL_ID + "?materialId=" + sdam_id_value + "&visualizer_type=" + visualizer_type); $.ajax({ type:"GET", url: URL_API_GET_MATERIAL_BY_TEXTURE_MATERIAL_ID + "?materialId=" + sdam_id_value + "&visualizer_type=" + visualizer_type, contentType: 'application/json', success: function(sdMaterialTextureResult) { // console.log("sdMaterialTextureResult", sdMaterialTextureResult); let pattern = '

'; if (sdMaterialTextureResult.length > 0) { // console.log("sdMaterialTextureResult.length", sdMaterialTextureResult.length); for (let index = 0; index < sdMaterialTextureResult.length; index++) { const element = sdMaterialTextureResult[index]; let borderTyle = ""; let imageStyle = "position: absolute;height: 35px;right: 27px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 7px;"; if (parseInt(sdam_id_value) === parseInt(element.sdam_id) && parseInt(pattern_id_value) === parseInt(element.patternId) && parseInt(tile_width_value) === parseInt(element.tile_width)) { borderTyle = "outline: solid #000 6px"; imageStyle = "position: absolute;height: 35px;right: 22px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px; bottom: 4px;"; } if (index % 3 === 0) { pattern += '

'; } pattern += '

'; const image_filename = element.image_location_300 || element.image_location_full; pattern += '

'; pattern += '

' +element.sd_design_pattern_id + '

'; pattern += '

'; pattern += '

'; if (index % 3 === 2) { pattern += '

'; } if ((index % 3 === 0 || index % 3 === 1) && sdMaterialTextureResult.length - 1 === index) { pattern += '

'; } } } pattern += "

"; $("#material_pattern_textures").append(pattern); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR.status); } }) // show material popup elementorProFrontend.modules.popup.showPopup({id: parseInt(61501)}); }) // Download Image $('#download-texture').on('click', function(event) { if (document.getElementById("isLoaded").value === "true") { console.log("download-texture clicked"); let artx = document.getElementById("artx").contentWindow; artx.postMessage("getTextureData","*"); artx.postMessage({ type: "getTexture", data: { size: 2000, quality: 0.6, format: "jpg" } },"*"); } }) // Sorting function $(document).on('change', '#sortingDropdown', function(e) { // Warm: image_warm | Cool: image_cool | Dark/Light: gs_average if (sdMaterialResultObj && sdMaterialResultObj.length > 0) { const selectedSorting = $(this).val() ? +$(this).val() : 0; let sortingObj = sdMaterialResultObj.sort((a, b) => { switch (selectedSorting) { // Default: Light -> Dark => gs_average value ASCENDING | 1 case 1: return b.gs_average - a.gs_average; // Dark -> Light => gs_average value DESCENDING | 2 case 2: return a.gs_average - b.gs_average; // Warm -> Cool => Warm value DESCENDING | 3 case 3: return b.image_warm - a.image_warm; // Cool -> Warm => Cool value DESCENDING | 4 case 4: return b.image_cool - a.image_cool; default: return 0; } }); appendHtmlMaterialData(sortingObj); } }) function appendHtmlMaterialData(sdMaterialResult) { let materials = '

'; if (sdMaterialResult && sdMaterialResult.length > 0) { sdMaterialResultObj = sdMaterialResult; // Add global object for Material Result data const sdam_id_value = document.getElementById("sdam_id").value !== "" ? document.getElementById("sdam_id").value : 729; // console.log("sdMaterialResult.length", sdMaterialResult.length); for (let index = 0; index < sdMaterialResult.length; index++) { const element = sdMaterialResult[index]; let borderTyle = ""; let imageStyle = "position: absolute;height: 35px;right: 28px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px;bottom: 7px;"; if (parseInt(sdam_id_value) === parseInt(element.sdam_id)) { borderTyle = "outline: solid #000 6px"; imageStyle = "position: absolute;height: 35px;right: 22px;display: inline-block;width: 90px;background-color: #000;color: #fff;text-align: center;line-height: 35px;bottom: 4px;"; } if (index % 3 === 0) { materials += '

'; } materials += '

'; const image_filename = element.image_location_300 || element.image_location_full; materials += '

'; materials += '

' +element.sd_pm_type + element.sd_pm_number + '

'; materials += '

'; materials += '

' + element.sd_public_texture_name + '

'; materials += '

'; if (index % 3 === 2) { materials += '

'; } if ((index % 3 === 0 || index % 3 === 1) && sdMaterialResult.length - 1 === index) { materials += '

'; } } } materials += "

"; const materialsEL = $("#materials"); if (materialsEL && materialsEL.length > 0) { materialsEL.empty().append(materials); } } }); })(jQuery)

'; } }, { "sTitle": "SDM###", "mData": "sdm_id", "sWidth": "15%", "bSortable": true, }, { "sTitle": "Date/time", "mData": "filetime", "sWidth": "25%", "bSortable": true, }, { "sTitle": "", "mData": null, "sWidth": "10%", "bSortable": false, "mRender": function(data, type, full) { return '

'; } } ], 'autoWidth': false, "bDestroy": true } ) } }); $("#tblJsonFiles").on('click', 'tbody .delete-json-file', function(e) { document.getElementById('originFileName').value = $(this).attr('id'); document.getElementById('rowIndex').value = $(this).closest('tr').index(); elementorProFrontend.modules.popup.showPopup({id: parseInt(58808)}); /* Close this popup */ elementorProFrontend.modules.popup.closePopup({}, e); }); $("#tblJsonFiles").on('click', 'tbody .json-file', function(e) { const fileName = e.target.innerHTML; // console.log("click aaaa", e.target.innerHTML, $(this).attr('id'), e.target); const pathJsonFile = $(this).attr('id'); $.get(pathJsonFile).success(function(data){ let ugly = JSON.stringify(data[0].data); let obj = JSON.parse(ugly); let pretty = JSON.stringify(obj, undefined, 4); document.getElementById('paramData').value = pretty; document.getElementById('originFileName').value = e.target.innerHTML; let artx = document.getElementById("artx").contentWindow; artx.postMessage({type:"loadParams", data: JSON.parse(pretty)},"*"); artx.postMessage("getTextureData","*"); $('#download-json').prop('disabled', false); $('#download-texture').prop('disabled', false); $('#download-json-texture').prop('disabled', false); $('#get-json').prop('disabled', false); $('#draw-json').prop('disabled', false); elementorProFrontend.modules.popup.closePopup({}, e); }); }) }); })(jQuery)

Reclaimed Cobblestone: The Most Ancient Paving Method (2024)
Top Articles
Latest Posts
Article information

Author: Kerri Lueilwitz

Last Updated:

Views: 5873

Rating: 4.7 / 5 (67 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Kerri Lueilwitz

Birthday: 1992-10-31

Address: Suite 878 3699 Chantelle Roads, Colebury, NC 68599

Phone: +6111989609516

Job: Chief Farming Manager

Hobby: Mycology, Stone skipping, Dowsing, Whittling, Taxidermy, Sand art, Roller skating

Introduction: My name is Kerri Lueilwitz, I am a courageous, gentle, quaint, thankful, outstanding, brave, vast person who loves writing and wants to share my knowledge and understanding with you.