// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// euclid
double euclid(NumericVector a, NumericVector b);
RcppExport SEXP _ggrepel_euclid(SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type a(aSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(euclid(a, b));
    return rcpp_result_gen;
END_RCPP
}
// centroid
NumericVector centroid(NumericVector b, double hjust, double vjust);
RcppExport SEXP _ggrepel_centroid(SEXP bSEXP, SEXP hjustSEXP, SEXP vjustSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type b(bSEXP);
    Rcpp::traits::input_parameter< double >::type hjust(hjustSEXP);
    Rcpp::traits::input_parameter< double >::type vjust(vjustSEXP);
    rcpp_result_gen = Rcpp::wrap(centroid(b, hjust, vjust));
    return rcpp_result_gen;
END_RCPP
}
// intersect_circle_rectangle
bool intersect_circle_rectangle(NumericVector c, NumericVector r);
RcppExport SEXP _ggrepel_intersect_circle_rectangle(SEXP cSEXP, SEXP rSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type c(cSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type r(rSEXP);
    rcpp_result_gen = Rcpp::wrap(intersect_circle_rectangle(c, r));
    return rcpp_result_gen;
END_RCPP
}
// intersect_line_circle
NumericVector intersect_line_circle(NumericVector p1, NumericVector p2, double r);
RcppExport SEXP _ggrepel_intersect_line_circle(SEXP p1SEXP, SEXP p2SEXP, SEXP rSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type p1(p1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type p2(p2SEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    rcpp_result_gen = Rcpp::wrap(intersect_line_circle(p1, p2, r));
    return rcpp_result_gen;
END_RCPP
}
// intersect_line_rectangle
NumericVector intersect_line_rectangle(NumericVector p1, NumericVector p2, NumericVector b);
RcppExport SEXP _ggrepel_intersect_line_rectangle(SEXP p1SEXP, SEXP p2SEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type p1(p1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type p2(p2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(intersect_line_rectangle(p1, p2, b));
    return rcpp_result_gen;
END_RCPP
}
// select_line_connection
NumericVector select_line_connection(NumericVector p1, NumericVector b);
RcppExport SEXP _ggrepel_select_line_connection(SEXP p1SEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type p1(p1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(select_line_connection(p1, b));
    return rcpp_result_gen;
END_RCPP
}
// approximately_equal
bool approximately_equal(double x1, double x2);
RcppExport SEXP _ggrepel_approximately_equal(SEXP x1SEXP, SEXP x2SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type x1(x1SEXP);
    Rcpp::traits::input_parameter< double >::type x2(x2SEXP);
    rcpp_result_gen = Rcpp::wrap(approximately_equal(x1, x2));
    return rcpp_result_gen;
END_RCPP
}
// repel_boxes2
DataFrame repel_boxes2(NumericMatrix data_points, NumericVector point_size, double point_padding_x, double point_padding_y, NumericMatrix boxes, NumericVector xlim, NumericVector ylim, NumericVector hjust, NumericVector vjust, double force_push, double force_pull, double max_time, double max_overlaps, int max_iter, std::string direction, int verbose);
RcppExport SEXP _ggrepel_repel_boxes2(SEXP data_pointsSEXP, SEXP point_sizeSEXP, SEXP point_padding_xSEXP, SEXP point_padding_ySEXP, SEXP boxesSEXP, SEXP xlimSEXP, SEXP ylimSEXP, SEXP hjustSEXP, SEXP vjustSEXP, SEXP force_pushSEXP, SEXP force_pullSEXP, SEXP max_timeSEXP, SEXP max_overlapsSEXP, SEXP max_iterSEXP, SEXP directionSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type data_points(data_pointsSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type point_size(point_sizeSEXP);
    Rcpp::traits::input_parameter< double >::type point_padding_x(point_padding_xSEXP);
    Rcpp::traits::input_parameter< double >::type point_padding_y(point_padding_ySEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type boxes(boxesSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type xlim(xlimSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ylim(ylimSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type hjust(hjustSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type vjust(vjustSEXP);
    Rcpp::traits::input_parameter< double >::type force_push(force_pushSEXP);
    Rcpp::traits::input_parameter< double >::type force_pull(force_pullSEXP);
    Rcpp::traits::input_parameter< double >::type max_time(max_timeSEXP);
    Rcpp::traits::input_parameter< double >::type max_overlaps(max_overlapsSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< std::string >::type direction(directionSEXP);
    Rcpp::traits::input_parameter< int >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(repel_boxes2(data_points, point_size, point_padding_x, point_padding_y, boxes, xlim, ylim, hjust, vjust, force_push, force_pull, max_time, max_overlaps, max_iter, direction, verbose));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_ggrepel_euclid", (DL_FUNC) &_ggrepel_euclid, 2},
    {"_ggrepel_centroid", (DL_FUNC) &_ggrepel_centroid, 3},
    {"_ggrepel_intersect_circle_rectangle", (DL_FUNC) &_ggrepel_intersect_circle_rectangle, 2},
    {"_ggrepel_intersect_line_circle", (DL_FUNC) &_ggrepel_intersect_line_circle, 3},
    {"_ggrepel_intersect_line_rectangle", (DL_FUNC) &_ggrepel_intersect_line_rectangle, 3},
    {"_ggrepel_select_line_connection", (DL_FUNC) &_ggrepel_select_line_connection, 2},
    {"_ggrepel_approximately_equal", (DL_FUNC) &_ggrepel_approximately_equal, 2},
    {"_ggrepel_repel_boxes2", (DL_FUNC) &_ggrepel_repel_boxes2, 16},
    {NULL, NULL, 0}
};

RcppExport void R_init_ggrepel(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
