Xinqi Bao's Git

XbSlicer, re-organized the entire project
[XbSlicer.git] / src / Slicer.hh
1 #pragma once
2
3 /*
4 @author: Xinqi Bao
5 Main class to manage the whole program.
6 Include reading file, slicing each layer and writting to file,
7 using mult-threads.
8 */
9
10 #include <cstring>
11 #include <iostream>
12 #include <mutex>
13 #include <string>
14 #include <thread>
15 #include <vector>
16
17 #include "Configurations.hh"
18 #include "Layer.hh"
19 #include "STL.hh"
20
21 class Slicer
22 {
23 private:
24 Stl stl;
25 int numLayer;
26 int finishedCount = 0; // count for each finished layers
27 bool* checkLayers;
28 std::string stl_target; // original stl file name
29 std::string gcode_target; // the name for outputting gcode file
30 std::vector<Layer> layers; // contain each layers with loops and gcode
31 std::thread threads[NUM_THREADS];
32 std::mutex checkMutex;
33 std::mutex countMutex;
34 void threadLayer();
35
36 public:
37 void slicing();
38 Slicer(std::string& filename);
39 Slicer(const char* filename);
40 };