Find the inside of a Loop Task

Given a ASCII diagram of a loop

e.g.

....................
......@@@@@.........
......@...@.........
.....@@...@@@@@.....
....@@........@.....
....@........@@.....
....@@@@@@@@@@......
....................
....................


And a location on the loop

e.g.

(7,1)


You must find the inside and outside of the loop

e.g.

00000000000000000000
00000011111000000000
00000011111000000000
00000111111111100000
00001111111111100000
00001111111111100000
00001111111111000000
00000000000000000000
00000000000000000000


Specifications


You may take input for the diagram as a string separated by newlines or obvious equivalent
You will receive a coordinate on the loop (0 or 1 indexed) as part of your input.  You may place your origin at any place you wish.  You may take this coordinate in (&lt;row&gt;, &lt;column&gt;), (&lt;column&gt;, &lt;row&gt;) or as the linear position on the string.  You may receive these data in any reasonable method.  All characters on the loop will be the same as the character at that index.
Preferred output is a 2 dimensional array of truthy and falsy values, however strings of 1 and 0 separated by newlines or any obvious equivalent of the later two are accepted.  The inside and outside must have different truth values but it does not matter which is which.
A loop is defined as a group of characters such that they are all the same character (e.g. @) and so that every character in the loop has a path to the original character (The character at the coordinate of input) that only passes through that same character (Taxicab geometry No diagonals).
The inside is all the loop itself and the places that cannot reach the edge of the diagram without crossing the loop.
The outside is everywhere else
This is code-golf


Test Cases

PasteBin
MATLAB, 163 159 146 78 bytes
function m=f(m,y,x);[~,i]=bwfill(m~=m(y,x),x,y,8);m=m*0;m(i)=1;m=bwfill(m,'h')

Thanks @rahnema1 for -66 bytes!!!
Now it does work on Try it online! BUT a few adjustments were needed, as MATLAB and Octave are not entirely compatible.
Explanation
First we make a binary image that just masks all the characters that are equal to the initial character. Then we determine the connected component the initial character is in.
% determine the connected component that is contains initial character
        
[~,i]=bwfill(m~=m(y,x),x,y,8);     % i contains the indices of the connected component
m=m*0;m(i)=1;                      % create an image of the connected component

After that we create an image of that connected component and apply fill all the &quot;holes&quot; in the image.
m=bwfill(m,'h')